写了一个随机代码,它将方法添加到原始数据类型。它应该将10添加到所需的数字。我不确定它是否会工作。我写了this+10
。但它返回15是correct.i假设这个关键字引用了对象本身。但是这里似乎它指的是数字变量的值。我的意思是它不应该像this.value+10
;我很困惑。对此有合理的解释!! ??
<html>
<body>
<script>
function add(){
console.log(this+10);
}
var number=5;
Number.prototype.add=add;
number.add();
</script>
</body>
</html>
答案 0 :(得分:3)
当你以下列形式调用函数时:
<some expression>.method(arguments)
方法中this
的值将是<some expression>
的值。这在Javascript中称为 context 。
如果表达式只是一个变量,那么this
的值将是该变量的值。
答案 1 :(得分:1)
请在评论标签中找到一些细节。
<html>
<body>
<script>
function add(){
console.log(this+10);
}
/*
Here you created a Number primitive type
->console.log(number.__proto__) -> returns: Number{}
*/
var number=5;
/*
This line adds a new method to the Number.prototype object
->console.log(number.__proto__) -> returns Number{add: function}
*/
Number.prototype.add=add;
/*
'this' inside the add method points to 'number'
and because you are trying to do an addition javascript will first try to
find the primitive value for 'this' object calling: valueOf method.
this.valueOf() -> number.valueOf() -> 5
So what is really happens is this:
this + 10 -> number.valueOf() + 10 -> 5 + 10 -> 15
*/
number.add();
</script>
</body>
</html>
希望这有帮助。