• 浅谈js对象及对象属性


    对象:

    ECMA-262把对象定义为 :无序属性的集合,其属性可以包含基本值,对象或者函数。

    严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每一个属性或方法都有一个名字,而每个名字都映射到一个值

    所有我们可以把对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数。每个对象都是基于一个引用类型创建的。

    下面是几个关于对象属性的一些方法

    1.hasOwnProperty()方法

    判断一个属性是在实例中,还是在原型对象中,可以使用这个方法。只有属性存在于对象实例中,这个方法才会返回true

    2.原型与in操作符

    在单独使用时,in操作符会在通过对象能够访问给定属性时返回true,无论该属性是存在于实例中还是原型中

    function hasPrototypeProperty(object,name){
            return !object.hasOwnProperty(name) && (name in object)
        }

    3.Object.keys()方法

    这个可以取得对象上所有可以枚举的实例属性,这个方法接收一个对象作为参数,返回一个包含所有可枚举属性的字符串数组

    function Person(){
        }
        Person.prototype.name = "tom";
        Person.prototype.age = 29;
        Person.prototype.job = "soft";
        Person.prototype.sayName = function(){
            alert(this.name);
        }
        var keys = Object.keys(Person.prototype);//传入这个方法的是一个原型对象
        alert(keys);//"name,age,job,sayName"
    
        var p1 = new Person();
        p1.name = "Rob";
        p1.age = 31;
        var p1keys = Object.keys(p1);
        alert(p1keys);//"name,age"
        //这个变量keys中将保存一个数组,数组中的字符串的顺序也是他们在for-in循环中出现的顺序。通过new Person(),即实例调用,只会返回包括两个属性的字符串数组,“name,age”.

    4.Object.getOwnPropertyNames()方法

    如果想要得到所有实例属性,无论是否可以枚举,都可以使用

    var keys = Object.getOwnPropertyNames(Person.prototype);
        alert(keys);//"constructor,name,age,job,sayName"
  • 相关阅读:
    第一章——第二节 启动模式
    Android 展示键盘时候布局被修改的问题
    JAVA混型和潜在类型机制
    第一章——Activity的生命周期
    android 程序中禁止屏幕旋转和重启Activity
    项目知识—九
    项目知识——八
    项目知识——七
    Drawable复习—第六章
    项目知识(六)
  • 原文地址:https://www.cnblogs.com/sminocence/p/6483241.html
Copyright © 2020-2023  润新知