javascript - 关于indexOf()
ringa_lee
ringa_lee 2017-04-11 11:53:00
[JavaScript讨论组]
 var person ={name:"n"}   
 var people=[{name:"n"}];
 var morePeople=[person];    
 alert(people.indexOf(person)) ;  //-1
 alert(morePeople.indexOf(person));  //0
 //不明白people和morePeople两者之间的差别。
ringa_lee
ringa_lee

ringa_lee

全部回复(4)
阿神
var person ={name:"n"}   
var people=[{name:"n"}];
var morePeople=[person];

alert(people.indexOf(person)) ;  //-1
//people里没有person对象,当然返回-1

alert(morePeople.indexOf(person));  //0
//morePeople里第0个元素就是person,所以返回所在位置0

归根结底,你问题是为什么{name: "n"} === {name: "n"}结果是false。那你要去看看Comparison operators

PHPz
var person ={name:"n"}   
 var people=[{name:"n"}];
 var morePeople=[person];    
 alert(people.indexOf(person)) ;  //-1
 alert(morePeople.indexOf(person));  //0
 

按我的理解,变量保存的是对象的引用,所以,people.indexOf(person),求的应该是它保存的引用在people中的位置,但是虽然 person 指向的对象的值虽然是{name:"n"},但是,跟people中的{name:"n"},并不是同一个对象,所以,就返回了 -1.

PHPz

比people非彼people。不是一个对象

高洛峰

indexOf方法在ES5中仅有字符串和数组有这种方法。
而对象没有这方法。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号