example = {};
example.Math = {
sin: function() {console.log('sin');},
cos: function() {console.log('cos');}
};
foo = function(){
sin();
};
foo.prototype = window.example.Math;
console.log(foo.prototype)
console.log(foo.cos)
console.log(foo())
根据我的理解,通过作用域链搜索引用。所以从理论上讲,如果我将一个具有定义函数的对象分配给一个原型(prototype),我应该得到该对象的所有这些函数和字段,或者我认为。我的理解错误在哪里?以上两种情况都不起作用。此外,内部 proto 变量未更新。显然这就是它不起作用的原因,但为什么我对原型(prototype)的分配不起作用?
最佳答案
我认为你需要意识到原型(prototype)方法需要使用new
关键字运行,它需要使用this
来访问它的变量和方法,比如这个:
example = {};
example.Math = {
sin: function() {console.log('sin');},
cos: function() {console.log('cos');}
};
foo = function(){
this.sin();
};
foo.prototype = window.example.Math;
console.log(foo.prototype)
console.log(foo.cos)
console.log(new foo())
关于javascript - 原型(prototype)继承 - 为什么这行不通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329014/