var name="hello"; var o={ name:"hi" } var sayName = function () { console.log(name) } sayName(); //hello sayName.call(o); //hello o.sayName=sayName; o.sayName(); //hello
这段代码,为什么后两个的输出都是hello,不应该是hi吗?
var name="hello"; var o={ name:"hi" } var sayName = function () { console.log(name) } sayName(); //hello sayName.call(o); //hello o.sayName=sayName; o.sayName(); //hello
这段代码,为什么后两个的输出都是hello,不应该是hi吗?
你还是没搞懂,单纯的变量问题;他只会循着函数作用域来展开;
sayName()
你执行这个函数他还是只会寻找自身定义这个变量没有;自身没name;那么找上级函数;他上级根本没有函数;就只有全局去找;找到了
var name="hello";
全局定义了个hello。你要找到对象里面的name可以这么写
var sayName = function () { console.log(this.name) }
这样返回的就是hi了
举报