Javascript 原型 - 不仅适用于实例对象
Javascript prototype - applies not only for instance objects?
原型在整个JavaScript中使用,
作为定义方便的方法将自动应用于 实例的属性和功能对象。
所以如果我写这个:
function Ninja(){}
Ninja.prototype.swingSword = function(){
return true;
};
var ninja1 = Ninja();
然后,所有的忍者都会有方法。
但是,如果它仅适用于实例对象 - 为什么以下代码有效?
Object.prototype.test1=function (){alert(this);};
Object.test1();
对象是普通对象,而不是实例对象。
问题:
- 似乎原型也为非实例对象应用了方法......
我在 mdn 中找不到对这种确切行为的任何解释.
通常这不起作用。你的代码有效,因为你向原型添加了函数Object
Object
函数,即Function
的实例,而"Function.prototype"是Object
的实例
当你扩展 Object
的原型时,你添加的属性可用于所有对象,因为它是所有 JS 对象的根:
Object.prototype.test1 = function(){ console.log('test1') };
({}).test1(); // logs test1
(new Image()).test1(); // logs test1
Object
,像所有构造函数一样,是一个函数。JavaScript 中的函数是一个对象。
相关文章:
- AddEventListener适用于浏览器,但不适用于Android
- 查找仅适用于原始图像的图像放大算法的名称
- 如何在category.php中执行jquery,这应该适用于类别wordpress中的每个帖子
- Web编程,简单但适用于机器人项目
- JavaScript不适用于internet explorer和Firefox,但适用于谷歌
- Jquery事件处理程序仅适用于匿名函数
- jQuery调整大小函数只适用于窗口
- 火灾在卸载前确认警报仅适用于外部站点
- EmberJS-适用于各种模型的适配器动态名称空间
- Facebook共享链接适用于用户,但不适用于粉丝页面管理员
- jQuery-适用于移动设备的多级菜单
- 循环中的切换脚本只适用于第一次迭代
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- Javascript 原型 - 不仅适用于实例对象
- 在单个页面上使用此.js 2 次时,它仅适用于一个实例
- if 语句仅适用于第一个实例
- iPhone jquery/ajax仅适用于某些实例
- 在两个地方调用同一个函数只适用于一个实例
- jQuery . addclass()和. removeclass()只适用于元素的第一个实例
- 如何创建多个可滚动文本实例?它适用于一个例子