js基础六-- 对象、包装类
一、对象
1、对象的创建方法
1.1 字面量方式创建对象 语法:var obj = {};
1.2 构造函数
调用系统的构造函数创建对象: 语法: var 变量名 = new Object();
自定义构造函数创建对像:
自定义构造函数创建对象,要先自己定义一个构造函数,然后创建对象
例如:
function Person(){}; // 自定义构造函数
var obj = new Person(); // 创建示例对象
重点:构造函数的内部原理:自定义构造函数创建对象做了四件事
1、在内存中开辟空间、存储创建新的对象(new一个对象)
2、把this设置为当前对象(在函数体最前面隐式的加上 var this = {})
3、设置对象的属性与方法的值(执行this.xxx = xxx;)
4、把this这个对象返回(隐式的返回this,执行完毕后return this)
一个简单对象传参的例子:

另一个例子:

二、属性类型
ECMAScript中有两种属性:数据属性和访问器属性
1、数据属性四个特性
[[Configurable]] (可配置) : 表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。默认值为true。
[[Enumerable]] (可枚举):表示能否通过for-in循环返回属性。默认值为true。
[[Writable]] : 表示能否修改属性的值。默认值为true。
[[Value]] : 包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined。
修改属性的默认特性,必须使用ECMAScript 5 的Object.definedProperty()方法。这个方法接受3个参数:属性所在的对象、属性的名字和一个描述符对象。其中描述符对象的属性必须是:configurable、enumerable、writable、value。设置一个或多个值,可以修改对应的特性值。


结论:可以Object.definedProperty()方法修改同一个属性,但在把configurable特性设置为false之后会有限制(在非严格模式下什么也不会发生,严格模式下会导致错误)。

2、访问器属性四个特性
访问器属性不包含数据值,包含一对儿getter和setter函数(这两函数非必须),在读取访问器属性时,会调用getter函数,在写入访问器时,会调用setter函数并传入新值。这个函数负责决定如何处理数据。
[[configurable]] : 表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。默认值为true。
[[Enumerable]] (可枚举):表示能否通过for-in循环返回属性。默认值为true。
[[get]] : 在读取属性时调用的函数。默认值为undefined。
[[get]] : 在写入属性时调用的函数。默认值为undefined。
三、属性的增删改查
点语法: 对象.名字=值;对象.名字=函数;(对象没有什么,只要点了,通过点语法,那么就可以为对象添加属性或者方法)
1、增
2、删 (delete 对象.属性)
3、改
4、查
三、包装类
new Number();
new String();
new Boolean();
原始值是不能有属性跟方法的,属性跟方法只有对象才有。原始值如果可以访问,因为它经历了一个过程叫包装类

来看下面例子


浙公网安备 33010602011771号