这是如何引用存储在变量中的值

时间:2014-08-21 08:59:51

标签: javascript html

写了一个随机代码,它将方法添加到原始数据类型。它应该将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>

2 个答案:

答案 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>

希望这有帮助。