在JavaScript中使用__proto__在构造函数中定义公共函数

时间:2017-04-20 09:42:04

标签: javascript ecmascript-6 prototype proto

据我了解,如果我使用构造函数创建了一个私有变量,那么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()函数。那么,看来这是有效的,还是我自欺欺人?以这种方式定义函数是考虑好的还是坏的做法?

0 个答案:

没有答案