JavaScript 实例和对象的区别
PHP中文网
PHP中文网 2017-04-10 12:44:14
0
2
779
var person = new Object();
var person = {};

问题:
person叫做实例? new Object()叫做实例化构造函数的过程?
person new之后有了Object构造函数的属性和方法,它是不是也叫对象?
第二个person没通用new而是对象字面量的方式,
那么他只能叫做对象么?内部也调用了new Object()?
实例和对象的区别是什么?

PHP中文网
PHP中文网

认证高级PHP讲师

reply all(2)
阿神

JS 里没有完全对应 Python 等语言里实例的结构,
JS 是基于原型的面向对象语言, 所有数据都可以当作对象处理,
所以 person 是对象, 可以把他当作是 Object 的实例. 当然, 一切都是对象.

为了更清楚这里的意义, 楼主更应该理解 JS 的里构造器, 比如 Object 这个函数.
JS 里用函数作为一个构造器来产生类型, 印象里楼主的 person = {} 只是前者的语法糖.
更明显的构造器的例子可以到网上很容易找到:
http://dbear.iteye.com/blog/613745

function start(){
   alert("Bang!!!");
}
 
//constructor
function Car(color, title){
   this.color = color;
   this.title = title;
   this.start = start;
}
 
var car1 = new Car("red", "BMW");
var car2 = new Car("yellow", "VOIS");

这里的 Car 就是一个构造器, 同时是函数... 当然函数也是对象..
JS 里的 this 需要注意, this 出现在函数体, 永远指向所属的对象.
有了构造器之后, 多多少少能按类的面向对象去理解, Car 是一个类.

个人不喜欢按类的面向对象去理解原型的面向对象, 因为原型灵活多了.
很多 JS 框架会扩展 JS 语言, 加入类的功能.. 需要的话建议看下框架理解.

PHPzhong

一切都是对象。
personObject的实例,也是对象。
第二个采用对象字面量的方式生成的person也是如此。
然而它内部没有调用new Object(),而是采用JSON的初始化方式:
将现有的引用指向person。
实例和对象的区别,从定义上来讲:
实例是类的具象化产品,
而对象是一个具有多种属性的内容结构。
实例都是对象,而对象不全是实例。
Js里面没有类(ES6以前)的语法,所以类的概念就通过创造一个对象来实现。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template