相关疑难解决方法(0)

Make toPrimitive转换取决于上下文

我希望一个对象在数字上下文中返回一个值,在字符串上下文中返回一个完全不同的值.以下不起作用.

foo = {
    toString: function() { return "string" },
    valueOf:  function() { return 123 }
}

console.log(foo * 2)       // got 246, fine
console.log("hi " + foo)   // got "hi 123", want "hi string"
Run Code Online (Sandbox Code Playgroud)

javascript types

8
推荐指数
1
解决办法
364
查看次数

在Javascript中加入()vs toString()vs valueOf()

谁能告诉我之间的确切差异join()toString()valueOf()在Javascript.何时以及在什么情况下我们需要使用它们?

javascript

8
推荐指数
1
解决办法
8297
查看次数

在javascript中添加Object和Array的结果是什么?

我在地址栏中尝试了这段代码:

javascript: alert({} + [])

结果是:[object Object].

javascript: alert(typeof ({} + []))

结果是:字符串.

有人可以向我解释发生了什么吗?

javascript types type-conversion

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

对象的隐含强制

我在使用JavaScript中的+运算符进行隐式强制时遇到了麻烦.即valueOf和toString的优先级顺序.

var obj = {};

obj.toString(); >'[object Object]"

obj.valueOf(); =>对象{}

'Hello ' + obj; >"Hello [object Object]"

所以obj被隐式强制转换为使用toString()方法而不是valueOf()的字符串;

var obj2 = {
    toString: function() {
        return "[object MyObject]"; 
    },
    valueOf: function() { 
        return 17;
    }
};
Run Code Online (Sandbox Code Playgroud)

obj2.toString(); >'[object MyObject]"

obj2.valueOf(); => 17

'Hello ' + obj2; >"你好17"

因此,当我覆盖toString和valueOf方法时,+运算符将强制使用valueOf.

我错过了什么?谢谢.

javascript

3
推荐指数
1
解决办法
422
查看次数

为什么我可以使用Date对象进行数学运算?

当我减去两个Date对象时,如下所示:

const startTime = new Date();
await someAsyncStuff();
const endTime = new Date();

const elapsedTime = endTime - startTime;
console.log(`The async stuff took ${elapsedTime} ms`);
Run Code Online (Sandbox Code Playgroud)

为什么Date对象最终被强制转换为毫秒,然后被减去?我知道他们这样做了,但我无法弄清楚导致这种情况的实际事件顺序是什么.

javascript

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

空字符串加上一个对象如何等于一个数字

v = {
toString: function () { return 'foo' },  
valueOf: function () { return 5 }
}
console.log('' + v); //5
console.log(v); // { [Number: 5] toString: [Function], valueOf: [Function] }
Run Code Online (Sandbox Code Playgroud)

为什么v对象的值为5?

javascript string object addition

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

标签 统计

javascript ×6

types ×2

addition ×1

object ×1

string ×1

type-conversion ×1