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
  • 相关阅读:
    判别模型、生成模型与朴素贝叶斯方法
    git的安装已经连github
    uva 10061 How many zero's and how many digits ?
    Java菜鸟学习笔记()--面向对象篇(七):Wrapper Class包装类
    丁香园技术负责人冯大辉近日在知乎上披露了当年共同创办阿里巴巴的18个合伙人的近况:
    不用派生CTreeCtrl不用繁琐的过程 教你如何让CTreeCtrl的每一项有ToolTip提示
    数据结构排序系列详解之三 冒泡排序
    HDU 4612 (13年多校第二场1002)无向图缩点,有重边
    Mac下cocos2dx3.1用Cocos IDE写的Lua binding篇01
    SECURITY_ATTRIBUTES 设置低权限
  • 原文地址:https://www.cnblogs.com/debra/p/7798870.html
Copyright © 2011-2022 走看看