JS中的对象,以及原型

2020-05-21  本文已影响0人  谁在烽烟彼岸

JavaScript的简单数据类型包括数字,字符串,布尔值(true/false), null值和undefined值。其他所有值都是对象。数字,字符串,布尔值也有方法,但是他们是不可变的。

对象是可变的键控集合,是属性的容器。属性的名字是包括空字符长在内的任意字符串(如果属性名是一个合法的JavaScript标识符,且不是保留字,则不需要用引号包裹。反之,则必须用引号包裹)。属性值可以是除了undefined值之外的任何值。

对象的三个相关对象特性

创建

//直接量
var obj = {};
//new
var m = new Object();
var a = new Array();
var r = new RegExp("js");
//Object.create()
var o = Object.create({x:1, y:2});
var o1 = Object.create(null);//o1不继承任何方法和属性
var o2 = Object.create(Object.prototype);//和{}/Object()一样
var o3 = Object.create({}, {
  p: {
    value: 2,       // 属性值
    writable: true,     //  是否可以重写值
    enumerable: true,   //是否可枚举
    configurable: true  //是否可以修改以上几项配置
  }
});

Object.create() 是一个静态函数,用于创建一个新的对象,第一个参数是这个对象的原型,第二个参数用以对对象的属性的进行进一步描述。

检索

对象的检索可以使用 “.”,或者["name"]来检索属性,如果属性名是一个合法的JavaScript标识符,且不是保留字,则可以使用“.”。反之,则必须用["name"])。

引用

对象通过引用来传递,但永远不会被复制;

原型/原型链

每个对象都连接到一个原型对象,并可以从中继承属性,所有通过对象字面量创建的对象最终都会连接到Object.prototype,从而建立起原型连接。
原型连接在更新是不起作用。只会更新该对象,不会触及其原型。
原型只有在检查值的时候才会被用到。从子类开始,依父子关系逐层查找属性的过程叫做委托。
原型关系是一种动态的关系,如果我们添加一个属性到原型之中,该属性对所有子类可见。

枚举

for...in... 可以用来遍历一个对象中的所有属性名,包括函数,属性,以及原型的函数和属性。若想过滤掉原型的方法/属性,可使用过滤器hasOwnProperty方法,用typeof来排除函数。
for 遍历不会包含原型的方法或者属性

减少全局变量的使用

创建一个唯一的对全局变量,然后将其他参数作为属性注入

上一篇 下一篇

猜你喜欢

热点阅读