小编jsg*_*uff的帖子

如何比较对象`a == b`是真的?

以下是面试前JavaScript在线测试中的一个问题:

function F(){};

var a = new F();
var b = new F();
Run Code Online (Sandbox Code Playgroud)

Q:如何使对比a == btrue?(例如console.log(a == b) // true)

我回答说,这是不可能的,因为ab是两个不同的实例F和JS等比较非原语的情况比较基准.

但前段时间我已经读过Axel Rauschmayer撰写的文章"在JavaScript中假运算符重载":http://www.2ality.com/2011/12/fake-operator-overloading.html - 我想知道是否有黑客攻击伪造运算符重载比较对象?

javascript operator-overloading object comparison-operators

5
推荐指数
1
解决办法
278
查看次数

如何获取调用函数/对象的上下文?

function define(prop, value) {
    Object.defineProperty( /* context of caller */ , prop, {value: value});
}

function F() {
    define('x', 42);
}

var f = new F();
Run Code Online (Sandbox Code Playgroud)

有没有办法获取调用函数的上下文(在上面的代码中内联注释)?

如果我绑定到这个(将注释替换为this)并在F构造函数中声明,它工作正常var def = define.bind(this);

javascript this function-constructor

5
推荐指数
1
解决办法
4973
查看次数