var person = new Object(); var person = {};
问题:
person叫做实例? new Object()叫做实例化构造函数的过程?
person new之后有了Object构造函数的属性和方法,它是不是也叫对象?
第二个person没通用new而是对象字面量的方式,
那么他只能叫做对象么?内部也调用了new Object()?
实例和对象的区别是什么?
var person = new Object(); var person = {};
问题:
person叫做实例? new Object()叫做实例化构造函数的过程?
person new之后有了Object构造函数的属性和方法,它是不是也叫对象?
第二个person没通用new而是对象字面量的方式,
那么他只能叫做对象么?内部也调用了new Object()?
实例和对象的区别是什么?
一切都是对象。person
是Object
的实例,也是对象。
第二个采用对象字面量的方式生成的person也是如此。
然而它内部没有调用new Object()
,而是采用JSON
的初始化方式:
将现有的引用指向person。
实例和对象的区别,从定义上来讲:
实例是类的具象化产品,
而对象是一个具有多种属性的内容结构。
实例都是对象,而对象不全是实例。
Js里面没有类(ES6以前)的语法,所以类的概念就通过创造一个对象来实现。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
JS 里没有完全对应 Python 等语言里实例的结构,
JS 是基于原型的面向对象语言, 所有数据都可以当作对象处理,
所以
person
是对象, 可以把他当作是Object
的实例. 当然, 一切都是对象.为了更清楚这里的意义, 楼主更应该理解 JS 的里构造器, 比如
Object
这个函数.JS 里用函数作为一个构造器来产生类型, 印象里楼主的
person = {}
只是前者的语法糖.更明显的构造器的例子可以到网上很容易找到:
http://dbear.iteye.com/blog/613745
这里的
Car
就是一个构造器, 同时是函数... 当然函数也是对象..JS 里的
this
需要注意,this
出现在函数体, 永远指向所属的对象.有了构造器之后, 多多少少能按类的面向对象去理解,
Car
是一个类.个人不喜欢按类的面向对象去理解原型的面向对象, 因为原型灵活多了.
很多 JS 框架会扩展 JS 语言, 加入类的功能.. 需要的话建议看下框架理解.