zoukankan      html  css  js  c++  java
  • 对象(二)

    1、Object.getPrototypeOf() : 根据实例对象获得原型对象

    function Person() {
        }
        Person.prototype.name = "张三";
        Person.prototype.age = 26;
        Person.prototype.sayName = function () {
            alert("我是公共的 name 属性");
        }
    
        var p1 = new Person();
        alert(Object.getPrototypeOf(p1)  == Person.prototype )      // true

    2、每次代码读取对象的一个属性的时候,首先在实例对象的属性中搜索是否有要找的属性,如果有,则取该属性值,如果没有,则去该对象对应的原型对象中查找该属性,如果有则返回该属性值,如果没有则返回 undefined

    function Person() {
        }
        Person.prototype.name = "张三";
        Person.prototype.age = 26;
        Person.prototype.sayName = function () {
            alert("我是公共的 name 属性");
        }
    var p2 = new Person()
        p2.name = "赵武";
        alert(p2.name)          // 赵武
        delete p2.name;
        alert(p2.name)          // 张三   // 如果需要访问原型上的 name 属性,将 实例对象上的属性删除 ,则可以直接访问 原型上的 name 属性

    3、hasOwnProperty  判断一个 对象属性是属于 实例属性 还是属于 原型属性

    function Person() {
        }
        Person.prototype.name = "张三";
        Person.prototype.age = 26;
        Person.prototype.sayName = function () {
            alert("我是公共的 name 属性");
        }
    var p3 = new Person()
        alert(p3.hasOwnProperty("name"))        // false
        p3.name = "aaa";
        alert(p3.hasOwnProperty("name"));       // true

    4、in 操作符   

      判断属性是否存在于实例对象和原型对象中

    function Person() {
        }
        Person.prototype.name = "张三";
        Person.prototype.age = 26;
        Person.prototype.sayName = function () {
            alert("我是公共的 name 属性");
        }
    var p4 = new Person();
        alert('name' in p4);         // true
        p4.name = "aaa";
        alert('name' in p4);         // true

    5、利用 in 操作符 和 hasOwnPrototype 函数来 判断 属性是否是 原型的

    function Person() {
        }
        Person.prototype.name = "张三";
        Person.prototype.age = 26;
        Person.prototype.sayName = function () {
            alert("我是公共的 name 属性");
        }
        var p4 = new Person();
        function checkOwnPrototype(attr,obj) {
            return (attr in obj) && (!obj.hasOwnProperty(attr))
        }
        alert(checkOwnPrototype("name",p4))       // true
        p4.name = "aaa";
        alert(checkOwnPrototype("name",p4))       // false

    6、Object.keys() 拿到当前对象里所有的 keys ,返回一个数组

    function Person() {
        }
        Person.prototype.name = "张三";
        Person.prototype.age = 26;
        Person.prototype.sayName = function () {
            alert("我是公共的 name 属性");
        }
        //  Object.keys()  拿到当前对象里所有的 keys ,返回一个数组
        var p6 = new Person();
        p6.name = "aaa"
        var arr = Object.keys(p6)
        alert(arr)      // name
        alert(Object.keys(Person.prototype))        // name,age,sayName

    7、Object.getOwnPropertyNames 枚举对象的所有属性 ,包括可枚举属性和不可枚举属性

    function Person() {
        }
        Person.prototype.name = "张三";
        Person.prototype.age = 26;
        Person.prototype.sayName = function () {
            alert("我是公共的 name 属性");
        }
        // Object.getOwnPropertyNames   枚举对象的所有属性 ,包括可枚举属性和不可枚举属性
        // constructor 是不可枚举的属性
        var attributes = Object.getOwnPropertyNames(Person.prototype)
        alert(attributes)           // constructor,name,age,sayName
  • 相关阅读:
    elasticsearch 相关命令
    Ubuntu server 修改系统时区
    js-eval运算符
    js-带操作的赋值表达式
    MVC模型绑定
    MVC部分视图的使用
    C#面试题-递归
    C#校验手机端或客户端
    AngularJs 中使用OpenLayer例子,手机端地图加载不显示问题
    C#后端调用WebApi地址
  • 原文地址:https://www.cnblogs.com/debra/p/7798870.html
Copyright © 2011-2022 走看看