JavaScript 的设计是一个简单的 基于对象 的范式. 一个对象就是一系列属性的集合, 一个属性包含一个名和一个值. 一个属性的值可以是函数, 这种情况下属性也被称为方法
对象从何而来?
这个问题很好回答:创建,对象是通过创建产生的,那如何创建呢?下面是总结的几种方法
1. 直接创建一个空对象
var aa={}
这种方法适用于创建应用中的唯一全局变量,可以减少全局变量污染,因为能把全局性的资源都纳入 aa 这个名称空间下。
2. 通过 new 来创建一个 Object 对象
var bb= new Object();
3. 通过new 来创建 构造函数
function CC(name,sex){
this.name=name;
this.sex=sex;
console.log('CC唱歌镇不错');
}
C();
var zw_gg=new CC('紫薇格格','女');
输出结果: 可能有人会有疑问,创建对象和创建构造函数有什么关系? 我对此的解答是:在JS中函数是一个可以被执行的对象,所以函数也是对象。 用这个方法是由几个需要注意的点:
- 构造函数的函数名是大写的,其中大写并没有什么特殊含义,只是表明一下它是构造函数。
- 以 new 的方式 来运行 完成了初始化功能,运行过程:
- 生成一个空对象 此时已经拥有了原型 - 函数运行,上下文是空对象 - 将它返回
4. ES6 创建对象(class)
JS最早是没有 class 这个关键字的,它是 ES6 的新特性,可以用来定义一个类,实际上,class 只是一种语法糖,它是构造函数的另一种写法。(什么是语法糖?是一种为避免编码出错和提高效率编码而生的语法层面的优雅解决方案,简单说就是,一种便携写法。)
class CC{
constructor(name,sex){
this.name=name;
this.sex=sex;
}
sayMiao(){
console.log('喵喵')
}
}
var zw= new CC('紫薇','女');
console.log(zw.name,zw.sex);
zw.sayMiao()
输出结果:
- constructor:是构造方法。每个类都必须要有一个 constructor,如果没有显示声明的话,js 引擎会自动给它添加一个空的构造函数。
- 定义于 constructor 内部的属性和方法(即定义在 this 上的属性和方法),属于实例的属性和方法,不会被其他对象实例分享。
- 定义在 constructor外部(比如上面的sayMiao)是属于原型的属性和方法,会被对象实例共享。
|