为什么在方法上调用(call)和在对象上调用方法是有区别的
why there is a difference between calling (call) on a method and calling the method on the obj
对不起,我真的应该问一下为什么有区别,
`Object.prototype.toString.call(o).slice(x,y);`
这吗?
o.toString().slice(x.y);
//为什么这些是不同的,调用应该改变'this'值为被调用的方法//和toString已经被继承,
var x = 44 ;
`Object.prototype.toString.call(x)`; //"[object Number]"
x.toString(); // '44'
您没有在这里的方法上调用.call
:
Object.prototype.toString(o).slice(x,y);
相反,您只需以o
作为参数调用该方法(在原型对象上)。
获取要调用
的等效方法o.toString().slice(x.y);
(它调用o
对象上的方法,不带参数),您需要使用
o.toString.call(o).slice(x.y);
为什么
x.toString()
和Object.prototype.toString.call(x)
不同?
因为x = 44
是一个数字,当你访问x.toString
时,你得到的是Number.prototype.toString
方法而不是Object.prototype.toString
方法。你也可以写
Number.prototype.toString.call(x)
获取"44"
.
使用第二个,并检查一个类(你的第一种情况)和该类的实例(第二种情况)之间的区别。
http://en.wikipedia.org/wiki/Instance_ (computer_science)
这是所有语言中常见的面向对象编程问题。
- 首先是类型的一般定义(没有任何具体数据)-你叫错了
- 第二个是具有自己数据的特定实例(可以是多个)
:Object.prototype. tostring (o)返回"Object Object ",所以它不能很好地为你工作
第一个(Object.prototype.toString
)调用对象的内置或默认toString函数,第二个调用o
的toString函数,该函数可能被覆盖,也可能没有被覆盖
var o = {};
o.toString();
// "[object Object]"
o.toString = function(){};
o.toString();
// undefined
Object.prototype.toString.call(o);
// "[object Object]"
对于数字,如44,toString函数不同于对象。调用值为44的变量的toString函数实际上会执行Number.prototype.toString.call()
。因此有不同的输出。
几个不同的类型:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toStringhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toStringhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toStringhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toString
- 未捕获错误:无法在初始化之前调用方法;
- 通过ajax从客户端调用C#方法来执行C#方法
- 如何避免在angular上多次调用方法;s ng重复
- React路由器错误-'无法调用方法'getRouteAtDepth'的未定义'
- 从window.onbeforeunload调用方法背后的代码
- 当输入字段为空时,如何在angular中调用方法
- 函数调用方法有什么用
- 多次调用方法后返回相同promise的模式
- 当从Chrome扩展动态注入JS时,从onload()内部调用方法
- 茉莉花 - 未调用方法
- jQuery如何在原型中调用方法
- ng显示“;调用方法“;不起作用
- Odoo销售点如何访问模型并使用JS调用方法
- 从React调用方法.JS州
- TinyMCE验证给出错误:无法调用方法'getContent'的未定义
- 向模板实例变量传递调用方法调用的结果时出现异常
- 如何在对象中调用方法
- 检查对话框是否为 Open 会引发“初始化前无法在对话框上调用方法”错误
- 在输入类型提交按钮上调用 C# 方法
- 通过类选择器单独调用方法