var obj={ f:function(){ console.log(this); console.log(this.f); console.log(this.a); console.log(this.b); }, a:"a", b:"b" } var b=obj.f b() obj.f()
时间: 2023-06-17 11:03:10 浏览: 133
这段代码中定义了一个名为obj的对象,其中包含一个属性a和一个属性b,以及一个方法f。方法f中使用了this关键字,这意味着该方法中的this指向调用该方法的对象。因此,当使用b=obj.f时,b指向方法f本身,而不是obj对象。因此,当调用b()时,this指向的是全局对象,而不是obj对象,因此输出的结果中不会包含a和b属性的值。
而当调用obj.f()时,this指向的是obj对象本身,因此输出的结果中会包含a和b属性的值。所以最终输出的结果应该是:
global object
undefined
undefined
undefined
obj对象
function f() {
console.log(this);
console.log(this.f);
console.log(this.a);
console.log(this.b);
}
a
b
相关问题
var name="zhaonan"; var obj1={ name:"miao", age:20, say:function(){ console.log(this.name); } } var obj2={ name:"xue", age:30, say:function(){ console.log(this.name); } } var f=obj2.say;f(); var e=f.bind(obj1);e(); var k=e.bind(obj2);k();
这段代码中定义了两个对象 obj1 和 obj2,它们都有一个名为 say 的方法,输出对象的 name 属性。然后定义了一个变量 f,将 obj2 的 say 方法赋值给它,接着执行 f(),输出的结果为 "undefined",这是因为 f 方法中的 this 指向了全局对象,而不是 obj2 对象。接着使用 bind 方法将 f 方法中的 this 绑定为 obj1,执行 e(),输出的结果为 "miao"。最后再次使用 bind 方法将 e 方法中的 this 绑定为 obj2,执行 k(),输出的结果仍然为 "miao",因为 bind 方法返回的是一个新函数,不会对原函数产生影响。
<script> var x =1; var obj = { x: 3, fun:function(){ var x = 5; return this.x;}}; var fun =obj.fun; console.log(obj.fun(),fun());</script>
这是一段 JavaScript 代码。代码中定义了一个变量 x 并赋值为 1,还定义了一个对象 obj,该对象有一个属性 x 值为 3,还有一个方法 fun,该方法内部定义了一个变量 x 并赋值为 5,并返回 this.x,即对象的属性 x 的值。接着,将对象的方法 fun 赋值给变量 fun。最后,通过 console.log 输出了 obj.fun() 和 fun() 的返回值。
代码中的输出结果应该为:3 1。这是因为 obj.fun() 中的 this.x 指向的是对象 obj 的属性 x,因此输出为 3;而 fun() 中的 this 指向的是全局对象,因此输出为全局变量 x 的值,即 1。
阅读全文