相关疑难解决方法(0)

JavaScript中的对象比较

在JavaScript中比较对象的最佳方法是什么?

例:

var user1 = {name : "nerd", org: "dev"};
var user2 = {name : "nerd", org: "dev"};
var eq = user1 == user2;
alert(eq); // gives false
Run Code Online (Sandbox Code Playgroud)

我知道如果它们引用完全相同的对象,则两个对象是相等的,但有没有办法检查它们是否具有相同的属性值?

以下方式对我有用,但这是唯一的可能性吗?

var eq = Object.toJSON(user1) == Object.toJSON(user2);
alert(eq); // gives true
Run Code Online (Sandbox Code Playgroud)

javascript comparison object object-comparison

1021
推荐指数
7
解决办法
85万
查看次数

如何在Javascript中测试函数的相等性

如何才能对bar和foo的平等进行积极的测试?

 foo = function() {
    a = 1;
 }; 

 bar = function() {
    a = 1;
 }; 

 if (foo === bar) alert('baz');
 if (foo == bar) alert('qux');
Run Code Online (Sandbox Code Playgroud)

以上条件都是错误的.

更新 - 根据要求我需要测试功能相等性的原因

我正在构建一个发布/订阅框架,需要传递回调以取消订阅主题.

请看小提琴:http://jsfiddle.net/jamiefearon/hecMS/47/

javascript equality function

22
推荐指数
3
解决办法
2万
查看次数

如何在javascript中比较两个静态函数是否相等

如何比较javascript中的两个静态函数是否相等?

javascript

7
推荐指数
2
解决办法
7813
查看次数

如何比较用`.bind()`调用的两个函数?

我正在我的Socket.IO事件和我的应用程序的其余部分之间构建一个中间件层.我这样做是为了让我可以在将来换掉Socket.IO.

我将回调函数存储在一个数组中.当特定事件触发时,我遍历数组并执行回调函数.这就像一个魅力.

问题在于从该数组中删除回调.当需要删除回调函数时,我遍历数组并检查每个数组项以查看它是否===与我想要删除的回调相等(使用).当回调存储在数组中时,这很好.但是,当回调与组合存储时.bind(),等号检查返回false.

我创建了一个(简化的)codepen来演示这个问题:http://codepen.io/petergoes/pen/wWPJdg?edit = 0012 .

我从Socket.IO代码中汲取灵感来编写我的删除方法:https://github.com/socketio/socket.io-client/blob/master/socket.io.js#L1623.但是,出现同样的问题.

最大的问题是:
如何使用该.bind()方法调用两个函数(一个或两个)?

我找到了这个答案如何在javascript中比较2个函数.但是,比较一个函数的字符串版本感觉有点粗略

codepen供参考:

var callbackList = [];

var objA = {
    myCallbackFunction: function myCallbackFunction() {
        console.log('hello my name is:', this.myName);
    }
}

var objB = {
    register: function register(callback) {
        console.log('register callback');
        callbackList.push(callback);
    },

    remove: function remove(callback) {
        console.log('remove callback');
        if(callbackList[0] === callback) {
            console.log('callback found, splice it');
            callbackList.splice(0, 1);
        } else {
            console.log('callback NOT found!');
        } …
Run Code Online (Sandbox Code Playgroud)

javascript

6
推荐指数
1
解决办法
1107
查看次数

Javascript对象标识

JavaScript中的对象具有唯一的标识.通过表达式(如构造函数或文字)创建的每个对象都被视为与其他所有对象不同.

这背后的原因是什么?

{}==={}//output:false
Run Code Online (Sandbox Code Playgroud)

为什么他们被区别对待?是什么让他们彼此不同?

javascript

4
推荐指数
2
解决办法
5106
查看次数

javascript中的函数相等性

JS 引擎实际上如何比较对象(如函数声明)的相等性?

var f1 = function(){};
var f2 = function(){};

console.log(f1 === f2);  //false
Run Code Online (Sandbox Code Playgroud)

幕后实际发生了什么来确定对象引用不同?它是比较内存位置吗?

javascript node.js

4
推荐指数
1
解决办法
1752
查看次数