您好,匿名用户
随意问技术百科期待您的加入

JavaScript 实例和对象的区别

0 投票
var person = new Object();
var person = {};

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

用户头像 提问 2013年 11月14日 @ Demeter 上等兵 (208 威望)
分享到:

1个回答

0 投票

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 语言, 加入类的功能.. 需要的话建议看下框架理解.

用户头像 回复 2013年 11月13日 @ Heimerdinger 上等兵 (311 威望)
提一个问题:

相关问题

0 投票
1 回复 36 阅读
0 投票
1 回复 34 阅读
0 投票
1 回复 33 阅读
用户头像 提问 2012年 12月1日 @ Caitlyn 上等兵 (452 威望)
0 投票
1 回复 43 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...