请问这几行js代码是什么意思

wateryh 2017-01-05 10:30:59
请问这几行js代码是什么意思


var t = {},
e = function() {
return ! 1
},
i = {};
var n = function(e, i) {
return t.toString.call(e) === "[object " + i + "]" //特别是这一句
};
...全文
178 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
补充更正 {}.toString相当于Object.prototype.toString 这个方法call过来用是可以检查一个对象最初定义的时候用的什么构造函数new的。对于js这种弱类型的语言,你要是new一个[],然后设置这个[]的__prototype__为Object.prototype,你再用这个数组.constructor==Object,会返回true。但是用Object.prototype.toString.call(这个数组)就依然返回[object Array]
  • 打赏
  • 举报
回复
引用 4 楼 Jym_lovemyself的回复:
[quote=引用 3 楼 weixin_36771189 的回复:] 补充更正 {}.toString相当于Object.prototype.toString 这个方法call过来用是可以检查一个对象最初定义的时候用的什么构造函数new的。对于js这种弱类型的语言,你要是new一个[],然后设置这个[]的__prototype__为Object.prototype,你再用这个数组.constructor==Object,会返回true。但是用Object.prototype.toString.call(这个数组)就依然返回[object Array]
如果不用.call()方法,那么我修改了{}的__prototype__之后,{}.toString是不是就返回修改后的类型?[/quote] 恰恰不是,每一个对象都有一个class属性,但是class属性是内部属性,只能用Object.prototype.toString这个方法打印出来,所以我们对那些不是继承Object.prototype的实列要用call()方法改变上下文来调用这个方法,这样就可以查看到对象的class属性了。class属性不会因为你后来修改了__prototype__而改变,而是看你当初第一次定义的时候继承的谁的原型,也就是用什么构造函数new的
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 6 楼 wateryh的回复:
xiexie
更正一下,__proto__都被我写成了__prototype__。手机打字,手误
Jym_lovemyself 2017-01-06
  • 打赏
  • 举报
回复
引用 3 楼 weixin_36771189 的回复:
补充更正 {}.toString相当于Object.prototype.toString 这个方法call过来用是可以检查一个对象最初定义的时候用的什么构造函数new的。对于js这种弱类型的语言,你要是new一个[],然后设置这个[]的__prototype__为Object.prototype,你再用这个数组.constructor==Object,会返回true。但是用Object.prototype.toString.call(这个数组)就依然返回[object Array]
如果不用.call()方法,那么我修改了{}的__prototype__之后,{}.toString是不是就返回修改后的类型?
wateryh 2017-01-06
  • 打赏
  • 举报
回复
xiexie
天际的海浪 2017-01-05
  • 打赏
  • 举报
回复

 var t = {},//定义一个空对象
    e = function() {
        return ! 1//1可以当做ture,取反之后就是false
    },
    i = {};//定义一个空对象
    var n = function(e, i) {//这个函数是用于判断e的值是否为指定类型
        return t.toString.call(e) === "[object " + i + "]"  //t.toString.call(e)的意思是用e去代替t来调用t对象的toString方法,然后判断方法的返回值是否等于"[object " + i + "]"拼接的字符串。
    };

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧