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();
时间: 2024-04-02 08:36:35 浏览: 152
linux嵌入式开发工具
这段代码中定义了两个对象 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 方法返回的是一个新函数,不会对原函数产生影响。
阅读全文