Javascript 这是什么意思?
以下是JavaScript中常见的两个代码片段:Javascript 这是什么意思?,javascript,prototype,this,Javascript,Prototype,This,以下是JavaScript中常见的两个代码片段: Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; Number.method('integer', function () { return Math[this < 0 ? 'ceil' : 'floor'](this); }); Function.pro
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
Number.method('integer', function () {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});
Function.prototype.method=函数(名称,func){
this.prototype[name]=func;
归还这个;
};
Number.method('integer',function(){
返回数学[this<0?'ceil':'floor'](this);
});
显然,第二个代码段中的
this
代表调用增强integer
方法的Number对象。第一段中的这个怎么样?从prototype
属性中,我们可以猜到它代表被扩充的构造函数,但是代码片段背后的逻辑对我来说是难以捉摸的。有人能详细解释一下吗?谢谢 在方法
方法中,此
将是对调用该方法的函数
对象的引用。在本例中,它将是对Number
函数的引用
由于Number
是一个内置类,可以使用new
关键字创建,因此它实际上是一个函数,这就是函数
原型应用于它的原因。作为方法调用的任何函数中的此
值始终是调用该方法的对象。因此在Number.method()
中,它将是Number
构造函数
当您在任何其他对象上调用方法时,它的行为方式与此完全相同,例如:
var obj = {
someMethod : function() {
console.log(this);
}
}
obj.someMethod(); // logs obj
上述示例与您的示例之间的唯一区别在于,这里的方法是在对象本身上找到的,而在您的示例中,它是通过查找原型链找到的。是所有函数都使用的全局对象,就像数字的全局对象一样。它们可以用作构造函数,但也可以应用于文本,即newfunction()
和函数(){}
都与函数相关
构造函数的prototype
对象是为该构造函数生成的所有实例定义属性和方法的地方。构造函数是函数,在JavaScript中,函数是对象
方法只是函数的另一个名称,通常描述对象的属性
因此,在Function.prototype
上设置方法意味着每个函数都继承了该方法
因此,构造函数Foo
(Foo.prototype.bar
)的prototype
上的bar
方法中的
Foo.prototype
如果作为Foo.prototype.bar()调用
- 如果从该实例调用,则为
Foo
,例如var z=new Foo()中的z
;z、 bar()代码>
- 无论您定义此
要使用的是什么,或
如果在没有上下文的情况下调用全局对象,即var b=Foo.prototype.bar;b()代码>
在您的代码中,这个
应该是上面的第二个,因为数字
是一个函数,因为它是一个构造函数,因此它是函数
的一个实例这个
可能意味着什么,特别是当函数被秘密地用下划线绑定时,所以答案永远不是表面上看起来的那样。不过,这是一个高级参考。有关“this”在javascript中的行为,请参阅我对另一个问题的回答。它与大多数其他语言不同:感谢您指出Number.method()
只是一个方法调用,因此这个
引用的最简单规则适用。