zoukankan      html  css  js  c++  java
  • 4-JS对象

    js中哪些是对象

    除了字符串、数字、false、true、null和undefined之外,JavaScript中的值都是对象

    原型(prototype)

    每一个JavaScript对象(null除外)都和另一个对象相关联。“另一个对象”指原型,每一个对象都从原型继承属性。
    所有通过直接量创建的对象都具有同一个原型对象,并可以通过JavaScript代码Object.prototype获得原型对象的引用。通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。例如: 通过 new Array()创建的对象的原型就是Array.prototype.没有原型的对象为数不多,Object.prototype就是其中之一。它不继承任何属性。其他原型对象都是普通对象,普通对象都具由原型。

    对象的创建

    var obj1 = {a: '1', b: 1, c:(x) => {console.log(x)}}
    var obj2 = new Object()
    
    var o1 = Object.create({x:1,y:2})   //o1继承了属性x和y
    var o2 = Object.create(null);      //o2不继承任何属性和方法,该方法用来创建一个没有原型的新对象
    var o3 = Object.create(Object.prototype); //o3和{}和newObject()一样
    

    对象的查询(get)和设置(set)

    var book = {name:"book1"};
    var name = book.name;        //获得book的”name”属性
    var name2 = book["name"];    //获得book的”name”属性
    book.title = "title1";       //给book创建一个名为”title1的属性”
    book["name"] = "book3";      //给“name”属性赋值
    
    

    删除属性(delete)

    delete运算符可以删除对象的属性,delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性。delete运算符只能删除自有属性,不能删除继承属性。

    delete book.name;    //book不再有属性name
    delete book["name"]  //book不再有属性”name”
    o = {x:1};           //o有一个属性x,并且继承属性toString
    delete o.x;          //删除x,返回true
    delete o.x; 	     //什么都没做(x已经不存在了),返回true
    delete o.toString;   //什么也没做(toString是继承的),返回true
    delete 1;            //无意义,返回true
    

    检测属性

    可以通过in运算符、hasOwnPreperty()和propertyIsEnumerable()方法来完成这个工作,甚至仅通过属性查询也可以做到这点。

    var o = {x: 1};    
    "x" in o;            //true :”x”是o的对象
    "y" in o;            //false:”y“不是o的对象
    "toString" in o;    //true:o继承toString属性
    
    var o = {x: 1};
    o.hasOwnProperty("x");	//true: o有一个自由属性x
    o.hasOwnProperty("y");	//false: o中不存在属性y
    o.hasOwnProperty("toString");   //false: toString是继承属性
    

    除了用in运算符之外,另一种更简便的方法是使用”!==”判断一个属性是否是undefined:

    o.x !== undefined;  //true: o中有属性x
    o.y !== undefined;  //false: o中没有属性y
    o.toString !== undefined;   //true: o继承了toString属性
    

    枚举属性

    对象继承的内置方法是不可枚举的,但在代码中给属性添加的属性都是可枚举的。

    var o = {x: 1, y: 2, z: 3};   //三个可枚举的自由属性
    o.propertyIsEnumerable("toString")   //false,不可枚举
    //遍历属性
    for(p in o){     
        console.log(p); //输出x、y和z,不会输出toString
    }
    
  • 相关阅读:
    Lombok 安装、入门
    Centos 6.5中使用yum安装jdk
    Mysql规范和使用注意点(转)
    Java编码规范
    windows2016重新配置sid
    Postman POST接口请求无法获取数据
    微信修改密码
    SQL事务
    .net时间格式化
    SQL查询列是否有重复值
  • 原文地址:https://www.cnblogs.com/fengxuefei/p/6250520.html
Copyright © 2011-2022 走看看