Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function Test(){}
Test.prototype = {
x: 5,
y: 3,
sum: function(){
return this.x + this.y;
}
};
arguments.callee.prototype = { ... }Знаете, что я для себя отметил, прочитав (правда, бегло) весь этот топик... А вот что. Когда понадобится собеседовать человека на должность классного JavaScript-программиста, основное требование к нему будет - прекрасно разбираться во всей описанной выше кухне. Не больше и не меньше. Потому что сам я в ней, похоже, разбираюсь недостаточно хорошо.
В результате в каждом объекте создаётся свой, отдельный метод sum.
Александру ШуркаевуВ результате в каждом объекте создаётся свой, отдельный метод sum.
у нас есть замечательное предложение this (или как поправили выше with)
Так, уже многое написано о проблеме наследования (котого в JS нет). Я же постараюсь рассказать о менее освещённом, но едва ли не более важном подводном камне: грамотной реализации методов.
var ServiceLocator = {
locate: function (service_name) {
// function body
},
}
var proto1 = {x: 1};
var proto2 = {x: 2};
function constr() {}
constr.prototype = proto1;
var obj = new constr();
alert(obj.x); // 1
constr.proto = proto2;
// либо obj.constructor.prototype = proto2;
alert(obj.x); // 1
function Test_One(){
this.x=5;
this.y=3;
this.sum=function(){
return this.x+this.y;
}
}
function Test_Two(){
this.x=5;
this.y=3;
}
Test_Two.prototype.sum=function(){
return this.x+this.y;
}
var A=new Test_One, B=new Test_One;
var C=new Test_Two, D=new Test_Two;
alert(A.sum==B.sum); // false
alert(C.sum==D.sum); // true
If you can’t read a program and be confident that you know what it is going to do, you can’t have confidence that it is going to work correctly. For this reason, the with statement should be avoided.
Мне мама говорила всегда: "Не ешь тесто - кишки слипнутся, придётся операцию делать!" Я верил до... 20 лет. Потом, когда подумал, сказал: «Мама, так ты меня всю жизнь обманывала?» — «Конечно, зато ты у меня никогда тесто не ел».
Методы в JavaScript