js问题,求解答,谢谢了

weixin_41633091 2019-03-18 09:09:04
请问20行那里为什么会是false
...全文
281 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤独的天才 2019-03-28
  • 打赏
  • 举报
回复
首先,这个eat方法呢,不是在原型中进行创建的,意思就是说,当你创建一个对象,这个方法也会随着对象的创建而进行创建一次eat()方法,所以两个对象的eat()方法,仅是方法名相同,但是不相等。

引用 7 楼 囧 的回复:
这样就是true了

function Person(){
this.name = "苹果";
}
Person.prototype.eat = function(){
alert(this.name);
};
var p1 = new Person();
var p2 = new Person();
alert(p1.eat === p2.eat);


这个人就是将方法创建在了原型中,才使其进行的相等,所以也说明原型作用就是共享数据,节省内存
半夜三更看球 2019-03-27
  • 打赏
  • 举报
回复
感觉应该是这样 p1.eat() === p2.eat() ----->ture; 而p1.eat ===p2.eat--------->false的原因是在 构造函数Person里么没有,而且原型链上也没有,所以就返回false;
風灬雲 2019-03-26
  • 打赏
  • 举报
回复
引用类型比较的是引用地址(也就是指针),指针一样才相同;和值类型不一样;建议看看JS中的堆栈说明
F_satr 2019-03-26
  • 打赏
  • 举报
回复
函数是引用数据类型,虽然p1.eat和p2.eat内容一样,但是其实他们指的是两个不同的存储地址指针,就如{}==={}的值为false一样
yaoshuyu 2019-03-26
  • 打赏
  • 举报
回复
你可以试试 两个=
丰云 2019-03-26
  • 打赏
  • 举报
回复
请查阅===的含义。。。。
2019-03-26
  • 打赏
  • 举报
回复
这样就是true了

function Person(){
	this.name = "苹果";
}
Person.prototype.eat = function(){
	alert(this.name);
};
var p1 = new Person();
var p2 = new Person();
alert(p1.eat === p2.eat);
黛蓝的窗 2019-03-19
  • 打赏
  • 举报
回复
虽然函数内容是一样的,但是指向不是同一对象;
qq_42966289 2019-03-19
  • 打赏
  • 举报
回复
p1.eat() === p2.eat()
qq_42966289 2019-03-19
  • 打赏
  • 举报
回复
请注意eat是一个函数.
天际的海浪 2019-03-18
  • 打赏
  • 举报
回复
代码呢??????????

87,922

社区成员

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

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