
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Defining a object's methods inside the object itself means that a new instance of the function is created for each instantiation of the object, bloating the instances.
|
|
|
|
|
|
Instead, it is more efficient to define the functions outside the object using the ``++prototype++`` keyword. This yields a single instance of each function, to which all the objects of that type refer.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,javascript]
|
|
----
|
|
function Person(firstName, middleInitial, lastName) {
|
|
this.firstName = firstName;
|
|
this.middleInitial = middleInitial;
|
|
this.lastName = lastName;
|
|
|
|
this.nameReversed = function() { // Noncompliant
|
|
return this.lastName + ", " + this.firstName + " " + this.middleInitial;
|
|
}
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,javascript]
|
|
----
|
|
function Person(firstName, middleInitial, lastName) {
|
|
this.firstName = firstName;
|
|
this.middleInitial = middleInitial;
|
|
this.lastName = lastName;
|
|
}
|
|
|
|
Person.prototype.nameReversed = function() {
|
|
return this.lastName + ", " + this.firstName + " " + this.middleInitial;
|
|
}
|
|
----
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Move this definition outside the "xxx" object and name it "xxx.prototype.yyy".
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== on 13 Nov 2015, 14:47:43 Linda Martin wrote:
|
|
OK!
|
|
|
|
endif::env-github,rspecator-view[]
|