Object.prototype.toString.apply(value)与value. tostring()有何不同
How is Object.prototype.toString.apply(value) different from value.toString()?
据我所知,前者将:
- 查找对象 上的
- 在
value
上调用,但this
与value
绑定
toString
方法和value.toString()
将。
- 在
value
的原型链中找到toString
方法 - 通过函数调用模式以
this
作为值调用toString
所以不同的是,如果有一个覆盖的toString
方法的值…它会使用这个
- 这是唯一的区别吗?
- 相反,如果我们想要保证我们调用
Parent
的方法而不是可能被Child
覆盖,那么这种模式是标准模式吗?(在这种情况下,父=对象,子=类值来自,如果我们考虑经典,和方法= toString。)
Object.prototype.toString.apple(value)
将允许您调用null
,当您使用null.toString()
时,它将产生一个错误。
Object.prototype.toString.apply(null);
>"[object Null]"
null.toString();
>TypeError: Cannot call method 'toString' of null
Object.prototype.toString
可以是与value.toString()
不同的方法,这取决于后者是什么。
> Object.prototype.toString.apply("asdfasdf")
"[object String]"
> "asdfasdf".toString()
"asdfasdf"
> Object.prototype.toString.apply(new Date)
"[object Date]"
> (new Date).toString()
"Tue Mar 05 2013 20:45:57 GMT-0500 (Eastern Standard Time)"
.prototype[function].apply
(或.call
或.bind
)允许您更改方法的上下文,即使上下文可能根本没有这样的方法。
var o = {};
o.prototype = {x: function () { console.log('x'); }}
var y = {}
o.prototype.x.call(y)
y.x(); //error!
…也就是说
- 这不是唯一的区别
- 这并不一定与父母和孩子之间的关系有关。它只是允许你用不同的对象上下文调用一个对象的方法(或任何函数)。
是的,你说对了。虽然我不经常看到人们这样直接调用Object.prototype.toString
(让对象覆盖它们的toString
方法通常是有意义的),但这当然是非常常见的,并推荐用于其他方法,如Object.prototype.hasOwnProperty
。
相关文章:
- toBoolean方法类似于toString
- 在ember/handlers中使用value和valueBinding有什么区别
- 需要url导航从DropDown Value onClick按钮传递url变量
- 用Javascript在下拉列表中选择VALUE选项
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- HTML Value finding
- Javascript GetElementByID has no value
- 如何获取文本框组的值,并使用jquery将它们放入(key:Value)数组中
- .value返回字符串,直到我将其保存到变量
- 为什么.toString的范围限制为36
- 如何使用 num.toString 和 str.split 查找整数的最后一位数字
- 将toString方法暴露给nashorn中的js对象
- 为什么控制台没有't使用输入的对象's的`toString`方法
- Javascript Date.toString() formatting?
- 需要帮助编写在不使用toString的情况下将十进制转换为二进制的代码
- JavaScript check value
- 使用javascript和css选择器获取value属性的内容
- JavaScript .toString() default value
- IE <= 11 Not liking toString.call(value)
- Object.prototype.toString.apply(value)与value. tostring()有何不同