js面向对象总结

一、创建对象的三种方法
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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值