浅谈对象oop的属性和方法以及区别

对象oop的属性和方法以及区别

//1.constructor 保存对象的创建函数 就是它的创造者 例如:

    var obj = {};
    var arr = [];
    console.log(obj.constructor); // function  Object() { [native code] }  Object类是基类
    console.log(arr.constructor); // function  Array() { [native code] }  


//2.hasOwnProperty('属性的名称'):用于检测给定属性在当前对象中(而不是原型中)是否存在 例如:

    obj.name = '程5';
    obj.age = 28;
    console.log(obj); //{name: "程5", age: 28}
    console.log(obj.hasOwnProperty('name')); // true
    console.log(obj.hasOwnProperty('height')); // false


//3.isPrototypeOf(obj) 检测原型 函数用于指示对象是否存在于另一个对象的原型链中。如果存在,返回true,否则返回false。例如

    function Site() {
        this.name = "chengMX";
        this.url = "http://write.blog.csdn.net/postlist";


        this.sayHello = function() {
            console.log("欢迎来到" + this.name);
        };
    }


    var s = new Site();
    console.log(Site.prototype.isPrototypeOf(s)); // true


    var obj2 = {
        engine: "javascript",
        sayHi: function() {
            document.writeln("欢迎访问" + this.url);
        }
    };
    // 使用对象obj覆盖Site本身的prototype属性
    Site.prototype = obj2;


    var s2 = new Site();
    console.log(obj2.isPrototypeOf(s2)); // true


//4.propertyIsEnumerable(‘属性名称’) :1.这个属性必须属于实例的,并且不属于原型. 
2.这个属性必须是可枚举的,也就是自定义的属性,可以通过for..in循环出来的. 

    var obj3 = {
        toString: function() {
            return 'Hello!'
        }
    }
    obj3.hasOwnProperty('toString') //返回 true
    console.log(obj3.propertyIsEnumerable('toString')); //true
    // 为了便利起见,规范确定某些属性默认是不可枚举的,比如Object.prototype.toString所以你 for (key in {}),是不会遍历到toString的。所有自定义属性默认是可枚举的,所以 for (key in {toString: ...}),是会遍历到toString的。为了避免你自定义的toString被枚举,可以用Object.defineProperty(obj, 'toString', {value: ..., enumerable: false})


//5.toLocaleString(),toString(),valueOf() 返回对象的字符串表示 但是valueOf 是返回对象的字符串、数值、布尔表示

    // 其中,调用数组的toString()和valueOf方法会返回相同的值,即由数组中每个值的字符串形式拼接而成的一个以逗号分割的字符串。
    // 实际上,为了创建这个字符串会调用数组每一项的toString()方法。
    var colors = ["red", "blue", "green"]; //创建一个包含3个字符串的数组
    alert(colors.toString()); //red, blue, green
    alert(colors.valueOf()); //red,blue,green
    alert(colors); //red,blue,green
    //     在这里,首先显式地调用了toString()和valueOf()方法,以便返回数组的字符串表示,每个值的字符串都表示拼接成了一个字符串,中间可以逗号分割。
    // 最后一行代码直接将数组传递给了alert()。由于alert()要接受字符串参数,所以它会在后台调用toString()方法,由此会得到与直接调用toString()方法相同的结果。


    // 另外,toLocalString()方法经常也会返回与toString()和valueOf()方法相同的值,但也不总是如此。
    // 当调用数组的toLocaleString()方法时,它也会创建一个数组的以逗号分割的字符串。
    // 而与前两个方法唯一的不同指出在于,这因此i是为了取得每一项的值,调用的是每一项的toLocaleString()方法,而不是toString()方法。
    var person1 = {
        toLocaleString: function() {
            return "Nikolaos";
        },
        toString: function() {
            return "Nicholas";
        }
    }
    var person2 = {
        toLocaleString: function() {
            return "Grigorios";
        },
        toString: function() {
            return "Greg";
        }
    };
    var people = [person1, person2];
    alert(people); //Nicholas,Greg
    alert(people.toString()); //Nicholas,Greg
    alert(people.toLocaleString()); //Nikolaos,Grigorios


//6.delete 删除对象的属性 例如

    console.log(obj);//{name: "程5", age: 28}
    delete obj.name;
     console.log(obj);//{age: 28}


  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值