Yib*_*ang 5 javascript function tostring
我正在学习JavaScript,我遇到了这个片段,它演示了类型检测:
var toClass = {}.toString // Copy a reference to toString for objects into toClass variable
alert( toClass.call( [1,2] ) ) // [object Array]
alert( toClass.call( new Date ) ) // [object Date]
Run Code Online (Sandbox Code Playgroud)
我不明白第一行中的空花括号是什么,所以我将它们删除如下:
var toClass = toString
Run Code Online (Sandbox Code Playgroud)
代码仍然有效.但是在下面的代码中,
function getAge () {
alert(this.age);
}
var p1 = {
age:1
};
var tellAge=getAge;
tellAge.call(p1); //1
Run Code Online (Sandbox Code Playgroud)
如果我var tellAge=getAge改为var tellAge={}.getAge,我得到一个错误:无法读取未定义的属性"调用".为什么是这样?是因为toString是内置功能吗?
是因为toString是一个内置函数
不完全是,因为两者Object和windowjavascript都有一个toString方法.
将{}在{}.toString代表在javascript中的新对象.对象有一个toString方法,这就是你要创建的引用.
如果省略{}它,它就等同window.toString于幸运,window对象本身就有一个toString方法.所以一切都继续有效.
当你{}.getAge告诉解释器getAge从Object 获取方法时,该方法不存在,设置tellAge等于undefined,这会导致错误cannot read property "call" of undefined
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |