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();

原始值是不能有属性跟方法的,属性跟方法只有对象才有。原始值如果可以访问,因为它经历了一个过程叫包装类

来看下面例子

posted @ 2021-04-06 12:25  半白半黑  阅读(88)  评论(0)    收藏  举报