在这种情况下,java脚本中对象方法的比较返回false
in which situation the comparison of objects methods in java script returns false
几天前,我看到了一个例子,将对象的实例与返回true或false的方法进行比较,我试着自己做这件事。正如我所解释的,如果我在Object中声明方法,而不是在他的原型中,那么在这个例子中它必须返回false,但我得到了true:
function Foo(name, lastName) {
this.name = name,
this.lastName = lastName,
this.show = function() {
return this.name;
}
}
function Foo2(name, lastName) {
Foo.apply(this, arguments);
}
Foo2.prototype = Foo.prototype;
Foo2.prototype.constructor = Foo2;
var x = new Foo2("Peter", "Pan");
var y = new Foo2("John", "English");
console.log(x.show() === y.show());// true, why not false? it is two differed functions
当我比较它们时,结果是真的,但我不明白为什么?如果我在对象内部声明属性并执行新的object,我会创建两个不同的函数,当我在原型中声明时,它会创建一个相等的函数。
谢谢你的建议。
您调用的是函数并比较它们的返回值,而不是函数本身。要引用函数本身,请使用后面没有()
的名称。
var x = new Foo2("Peter", "Pan");
var y = new Foo2("Peter", "English");
console.log(x.show() === y.show()); // true
console.log(x.show === y.show); // false
相关文章:
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- Javascript集:任何覆盖元素之间比较的方法
- jQuery验证插件-比较两个选择下拉列表的自定义方法
- 任何比较两个不同位图图像并在javascript中检测不同区域的方法
- 如何将 Math.random() 方法生成的当前值与以前的值进行比较
- 为什么 ECMAScript 6 包含 Set 对象,但没有提供比较它们相等的方法
- 我需要使用单独类中的方法将单个对象与数组进行比较
- 如何在 $scope.$watch 方法中比较 oldVal 和 newVal
- 将JavaScript文件插入DOM中(方法比较)
- 比较两种回退机制加载本地jQuery库的方法
- 短手(类型不同)是字符串的正确/错误比较的好方法
- For和While迭代方法的比较
- 比较为零的有效方法
- array.sort()方法中反向比较函数背后的逻辑
- 什么'将一个值与多个值进行比较是最漂亮的方法
- 什么'这是比较Google Sheets中两列数据并使用Google脚本仅输出不匹配数据的最佳方法
- 在这种情况下,java脚本中对象方法的比较返回false
- 在javascript中比较位置的正确方法
- 跨浏览器附加body onload(方法比较)
- 方法比较:EaselJS vs多个画布vs隐藏画布的互动性