javascript - 原型(prototype)继承 - 为什么这行不通?

标签 javascript prototype

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())

http://jsfiddle.net/Mubqy/9/

根据我的理解,通过作用域链搜索引用。所以从理论上讲,如果我将一个具有定义函数的对象分配给一个原型(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/

相关文章:

javascript - 组件 react 中的传播运算符

javascript - 如何构建多部分 MIME 请求并使用 AngularJS 的 $http 方法发布它?

javascript - 这是正确的(JavaScript 原型(prototype)属性)吗?

javascript - 在 JavaScript 的原型(prototype)名称中使用 "dot"

javascript - Class.prototype.Function() 与 Class.a Function()

JavaScript 嵌套对象

javascript - 如何创建要添加到 JavaScript 对象变量的动态键

Javascript 隐藏/显示 - 更优雅的方式来做到这一点?

javascript - 将参数传递给 itemview 中的事件回调

javascript - 原型(prototype)是怎么回事