据我了解,如果我使用构造函数创建了一个私有变量,那么prototyped函数就无法访问它。例如:
var ClassTwo = function() {
var prop = 1;
}
// This will error out when called.
ClassTwo.prototype.init = function() {
try {
console.log( "prop is ", prop );
} catch(e){
console.error( "prop is undefined" );
}
}
然而,使用__proto__
我发现我可以在构造函数中访问原型,因此这是可能的:
var ClassOne = function() {
var prop = 1;
this.__proto__.init = function() {
console.log( "prop is ", prop ); // Will work!
}
}
你可以在这个小提琴中看到它:https://jsfiddle.net/574h8fkL/1/
当我检查对象ClassOne和ClassTwo时,两者似乎在其原型中都有init()函数。那么,看来这是有效的,还是我自欺欺人?以这种方式定义函数是考虑好的还是坏的做法?