如何确定函数调用的具体调用对象?
- 内容介绍
- 文章标签
- 相关推荐
本文共计368个文字,预计阅读时间需要2分钟。
主要问题是代码中使用了`var`关键字来定义`length`属性,这会导致`length`在方法中访问时被视为未定义。以下是修改后的代码:
javascript// 主要问题是代码中使用了 var 关键字来定义 length 属性,// 这会导致 length 在方法中访问时被视为未定义。这里,为了解决问题,应该使用`let`或`const`来定义`length`属性,以便它可以在方法中正确访问。以下是修改后的代码:
javascript// 1. [JavaScript] 代码var length=10;function fn() { console.log(this.length);}var obj={ length: 5, method: function(a) { a(); // 因为定义 length 用的 let,所以这里不会显示 undefined }};
// 调用方法以测试obj.method(fn);
主要是第一题1.[代码][JavaScript]代码
/* var length = 10; function fn(){ console.log(this.length); } var obj = { length: 5, method: function(a) { a(); // ? 由于定义length用的var,所以不是全局变量这里显示undefined arguments[0](); // ? 同一个函数对象,这里通过arguments对象引用来访问,所以最后显示的是arguments的length } } obj.method(fn); //就相当于一个类创建两个对象,不同的对象调用同一个方法,里面this结果是调用对象 */ /* ~function() { console.log(typeof next) // ? ~function next() { console.log(typeof next) // ? }() }(); //看成如下 (function(){ console.log(typeof next); (function next(){ console.log(typeof next); })(); })() */ /* a=3; a.prop=4; console.log(a+a.prop); //NaN //console.log(a); //console.log(a.prop); */ /* a='a'; a.prop='b'; console.log(a+a.prop); //aundefined */
本文共计368个文字,预计阅读时间需要2分钟。
主要问题是代码中使用了`var`关键字来定义`length`属性,这会导致`length`在方法中访问时被视为未定义。以下是修改后的代码:
javascript// 主要问题是代码中使用了 var 关键字来定义 length 属性,// 这会导致 length 在方法中访问时被视为未定义。这里,为了解决问题,应该使用`let`或`const`来定义`length`属性,以便它可以在方法中正确访问。以下是修改后的代码:
javascript// 1. [JavaScript] 代码var length=10;function fn() { console.log(this.length);}var obj={ length: 5, method: function(a) { a(); // 因为定义 length 用的 let,所以这里不会显示 undefined }};
// 调用方法以测试obj.method(fn);
主要是第一题1.[代码][JavaScript]代码
/* var length = 10; function fn(){ console.log(this.length); } var obj = { length: 5, method: function(a) { a(); // ? 由于定义length用的var,所以不是全局变量这里显示undefined arguments[0](); // ? 同一个函数对象,这里通过arguments对象引用来访问,所以最后显示的是arguments的length } } obj.method(fn); //就相当于一个类创建两个对象,不同的对象调用同一个方法,里面this结果是调用对象 */ /* ~function() { console.log(typeof next) // ? ~function next() { console.log(typeof next) // ? }() }(); //看成如下 (function(){ console.log(typeof next); (function next(){ console.log(typeof next); })(); })() */ /* a=3; a.prop=4; console.log(a+a.prop); //NaN //console.log(a); //console.log(a.prop); */ /* a='a'; a.prop='b'; console.log(a+a.prop); //aundefined */

