1 对象相关的一些语言特性
1.1 一切皆为对象
JavaScript里所有的东西都是对象。 对象是属性的集合。 数字, 字符串, 布尔值等原始值是“伪对象”, 它们同样拥有属性, 但是是在栈上分配并按值传递。 而其他的对象是堆上分配并按引用传递。
一个很重要的概念是, 函数也是对象, 能够作为变量的值, 返回值, 参数或者属性的值。 函数对象特殊的地方是能通过“xxx()”语法执行包含在xxx函数对象内的代码。 因为这一特殊性, typeof xxx 将会返回function, 但这只是一种便利设施。
1.2 对象的属性可以动态添加和删除
以下为引用的内容: var foo = new Object(); |
1.3 除了宿主对象, 其它对象皆由构造函数创建
要有对象, 就先要有创建对象的方法。
在C++/Java等语言, 这个方法就是实例化XXX类的一个实例xxx.
而在JavaScript的世界里实际没有类的东西, 当然仍然可以用“类”和“实例”等惯用语来描述JavaScript中类似的行为, 但其机制是完全不同的。 JavaScript的对象是由构造函数创建的, 每个对象都有constructor属性表示创建该对象的构造函数:
以下为引用的内容: function Test() { this.a = "hello"; } |
构造函数也是对象, 那构造函数是由什么创建? 内建的Function函数:
以下为引用的内容: function Test(a, b) |
Function函数又是由什么创建? 实际上Function是本机代码实现的固有对象. 不过为了一致性, Function也有constructor属性, 该属性指向它自己. 接上面的代码:
以下为引用的内容: /* 输出 function Function(){ 广州市越秀区沿江中路313号康富来国际大厦1203-1205室 深圳市福田区深南大道6007号安徽大厦创展中心18楼14-17室 上海市长宁区延安西路895号申亚金融广场18楼D2-10 佛山市禅城区季华五路万科金融中心3313室 Copyright © 2003-
互诺科技, All Rights Reserved
粤公网安备 44010402000282号 粤ICP备09019378号-1
|