js面向对象总结

来源:互联网 发布:易语言网络验证教程 编辑:程序博客网 时间:2024/05/16 01:18

一、创建对象的三种方法
1、字面量方式创建

var obj={    a:"战三",    b:"李四"}

2、new构造器的方法,首先要了解原型链

function foo(){}//当创建函数对象之后,函数对象默认会带有一个foo.prototype.属性。属性是一个对象属性var objNew = new foo();//创建一个新对象,他的原型指向foo.prototype    objNew.x = 2;    objNew,y = 3;

3、Object.create创建对象

var objCreate = Object.create({x:1})var objCreate = Object.create(null)/*        *用create创建对象,传入的值,直接赋值给对象的原型链,而不是对象本身。        *传入null之后,对象的原型直接就是null,不会包含任何方法objCreate.toString显示undefined。    */

二、查找和删除
* in操作符检查对象中是否有这个属性,会继续向上查找,到原型链顶端,object.prototype
* hasOwnProperty检查对象中是否有这个属性时,只会查找对象本身,不会向上查找对象的原型链。
* 查找属性的值时,会沿着原型链查找,但是给对象赋值时,不会像原型链查找属性赋值,只会在对象本身添加或修改属性和值,原型链上的保持不变。
* delete obj.z删除对象上的属性。不会删除原型链上的属性
* 可继承原型链上的属性,但是不会修改原型链上的属性,只有继承权没有修改权。

三、对象的一些方法
1、获取属性中的所有标签:Object.getOwnPertyDescriptor(要查看的对象,’要查看的属性’)
2、configurable表示是否可配置,返回false为不可配置,true为可配置
3、propertyIsEnumerable(“检测属性”)是否可枚举属性。(for..in..遍历的时候)
4、Object.defineProperty(对象名,’属性’,{enumerable:false,value:1000}),设置自定义属性不可枚举
5、属性枚举

var o={x:1,y:2,z:3}    var key;    for(key in o){        console.log(key)//x,y,z    }

6、只想枚举对象本身的属性,不想获取对象原型链上的属性

for(key in o){        if(obj.hasOwnProperty(key)){            console.log(key)//x,y,z        }    }//用hasOwnProperty过滤一下。

7、getOwnPropertyDescriptor({pro:true},’pro属性名’),查看一个属性上面都有哪些属性标签
8、给空对象设置属性

var person={};    Object.defineProperty(person,'name',{        configurable:false,        writable:false,        enumerable:true,        value:"bos man"    })    //通过Object.key(person)可获得对象上所有的key

9、对象设置多个属性

Object.defineProperties(person,{        title:{value:'fe',enumerable:true},        corp:{value:'baba',enumerable:true}    })    //想赋值和修改属性,writable必须为true    //想删除和修改getter和setter和修改属性标签configurable必须为false

10、 查看对象是否可扩展,Object.isExtensible(对象名)
11、设置对象不可扩展(阻止对象添加新的属性),Object.preventExtensible(对象名)
12、Object.seal(obj)将对象上所有属性的configurable设置为false
13、Object.freeze(obj)设置对象不可配置,不可写,不可删除
14、对象序列化JSON.stringify(obj),对象转换成字符串
**注:如果对象中的属性值是undefined,那么这个属性将不会出现在序列化字符串结果当中,
如果是值是NAN或Infinity,序列化之后值为null,
如果是new Date()结果为当前时间**
15、后端返回JSON数据,转换为对象的方法:JSON.parse(‘{“x”:1}’)
四、对象标签
1、proto
2、class:表示对象是哪一个类型,通过Object.prototype.toString()方式获取class
3、extensible:表示对象是否可扩展,对象上的属性是否可以被继续添加

0 0
原创粉丝点击