JavaScript精华知识之对象部分

xiaoxiao2021-02-27  234

JavaScript中简单类型包括:number类型、string类型、undefiend类型、null类型、Boolean类型。其它值都是对象,数组是对象、函数是对象、正则表达式是对象、对象是对象、Date是对象。 对象是属性的容器,其中每个属性都有自己的属性名和属性值。 属性名可以是包含空字符的任意字符, 属性值是除了undefined之外的任意值。对象都有自己的属性和方法。 JavaScript中的对象可以通过原型链来继承其它对象的属性和方法。

对象字面量

创建对象可以使用new关键字后跟一个构造函数Object()来创建,也可以通过对象字面量来创建。对象字面量法就是包围在一对花括号中的0个或多个"名/值"对。 var obj = new Object(); var obj1 = { name : "Tom", age : 21 }; 在对象中也可以嵌套对象。如果属性名是合法的标识符而还是保留字,可以不使用双引号包围起来。

检索与更新

对象检索对象的属性,也就是访问对象的属性可以使用[],里面用双引号将要访问的属性名括起来,也可以使用"."后跟属性名来访问。 var obj = { name : "Tom", age : 21 }; console.log(obj["name"]); //Tom console.log(obj.age); //21 "[]"方式访问对象一般用于不确定某属性是否是该对象的属性时使用,建议使用圆点来访问对象属性。 更新属性、新添加属性:修改属性值,或新添加属性也使用 圆点。 obj.name = "Bob"; obj["name"] = "Bob"; obj.job = "WEB前端工程师";

引用

对象是通过引用来传递的,它们永远不会被复制。也就是说定义一个对象,该对象名就是一个指向对象的引用,该对象名就是一个指针,它指向一个对象。 var obj1 = new Object(); //定义一个对象 var obj2 = obj1; //该操作就是将一个对象的指针obj1赋值给了ojb2 这样obj1与obj2同时指向一个对象,将obj1中的值(指针)复制给了obj2,那么改变其一个变量,另一个变量也会受到影响。 obj1.name = "Tom"; //为对象添加属性名和属性值 console.log(obj2.name); //Tom 以上操作是:为obj1变量指向的对象添加一个属性,因为obj2也指向这个对象,所以obj2.name就是obj1变量赋值的值。

原型

每个对象都连接到一个原型对象,可以通过这个原型对象继承其它对象的属性和方法。通过对象字面量创建的对象都会连接到Object.prototype。 当创建一个新对象时,可以选择某个对象作为这个新对象的原型。 var obj1 = {}; if (typeof Object.create != "function") { //判断对象的属性是否是一个函数 Object.create = function (o) { var F = function () {}; //新创建一个对象作为构造函数。 F.prototype = o; //将传入的对象的指针赋值给新对象的原型对象,使其实现继承,F继承了o对象的属性和方法 return new F(); //最后返回一个新对象的实例对象。这个实例对象拥有了o对象的属性和方法 }; } var obj2 = Object.create(obj1);

反射

可以通过hasOwnProperty()方法来确定某对象是否有某个属性,如果有返回true,反之,返回false。 var obj = new Object(); obj.hasOwnProperty("name"); //false

枚举

可以通过for in语句来遍历某对象的所有属性,该方法来枚举出对象的所有属性--包括不可枚举的属性也会被遍历出来。使用for in语句遍历出来的属性是没有顺序的。 所以要避免使用for in语句来遍历对象的属性。可以使用数组的方式,用for循环语句来遍历对象的属性。这样遍历出来的属性的顺序就是属性名在对象中的顺序。 推荐使用for of语句来遍历对象属性更好。

删除

可以使用 delete方法来删除对象的某个属性。 var obj = {name : "Tom"}; console.log(obj.name); //Tom delete obj.name; //删除name属性 console.log(obj.name); //undefined 如果该对象是继承了某个对象,那么删除这个属性后,可能会暴露出该对象的原型对象中的这个属性。也就是被继承的对象的属性。

减少全局变量的污染

最小化使用全局变量之一:为程序只创建一个全局变量,将全局性的资源容纳到一个名称空间下,就会减少应用程序之间的冲突。
转载请注明原文地址: https://www.6miu.com/read-9659.html

最新回复(0)