var setAge = function (newAge) {
this.age = newAge;
};
var bob = new Object();
bob.age = 30;
bob.setAge = setAge;
bob.setAge(50);
基本上,代码以更改年龄属性的方法开头,然后方法后跟一个“bob”对象,最后有一个代码使用该方法来改变bob的属性(年龄)。
我有两个问题:bob.setAge = setAge; (代码中的倒数第二行)
通过将setAge设置为等于bob.setAge,是否将setAge设置为全局变量,等于bob.setAge?
在bob.setAge中,bob是变量,setAge是方法。我认为在写出像bob.setAge这样的东西时,句点之前的单词引用了对象( susan .age),并且句点之后的单词引用了一个属性(susan。年龄)。 javascript如何识别bob.setAge中的setAge引用方法而不是属性?
答案 0 :(得分:2)
通过将setAge设置为等于bob.setAge,不会将setAge设置为全局变量,等于bob.setAge?
不,你正在做相反的事情
在bob.setAge中,bob是变量,setAge是方法。我认为在写出像bob.setAge这样的东西时,句点之前的单词引用了对象(susan.age),而句点之后的单词引用了属性(susan.age)。 javascript如何识别bob.setAge中的setAge引用方法而不是属性?
JS没有"认识到它" (它不区分"他们"因为"他们"是相同的事情):bob.setAge
包含对你可能(并且你做)调用的函数的引用< / p>
答案 1 :(得分:1)
var setAge = function (newAge) {
console.log(this);
this.age = newAge;
};
var bob = new Object();
bob.age = 30;
bob.setAge = setAge;
console.log('Calling set age as bob\'s method');
bob.setAge(50); //this should be bob...
//above is similar to the following
console.log('Calling set age with bob as scope');
setAge.call(bob, [ 50 ]);
console.log('Calling set age as a function with no context');
setAge(100); //this should be global object since the function is called without any context / scope. In this case, it's the window object since we are running in a browser. In node, it will be node itself, etc.
&#13;