zoukankan      html  css  js  c++  java
  • js 中对象属性的特性

    数据属性:

    数据属性包含一个数据值的位置,在这个位置可以读取和写入值。

    4个描述的行为特性:

    writable  表示能否修改属性的值。默认为true

    Enumerable 表示能否过过for in循环返回属性是否可以枚举。

    configuralbe 表示是否能过来delete删除属性从来重新定义属性,能否修改其配置。

    value 包含这个属性的数据值。读取属性值的时候,从这个位置读取。

            写入属性值的时候,把新值保存在这个位置。这个特性的默认值为true。

     1 <script>
     2     function Foo(){}
     3     Foo.prototype.z = 3
     4     var obj = new Foo()
     5     obj.x = 1
     6     alert("x" in obj)    //=>true x是obj对象的自有属性
     7     alert("z" in obj)    //=>true z是obj原型上继承来看属性
     8     //hasOwnProperty 必须是对象上的自有的属性才返回true
     9     alert(obj.hasOwnProperty("x"))    //true  x是obj对象上的自有属性
    10     alert(obj.hasOwnProperty("z"))    //false z是obj原型上继承来的属性,不是他的私有属性
    11     alert(Foo.prototype.hasOwnProperty("z")) //=>true z是原型上自有的属性,所以返回true
    12     alert(Object.prototype.hasOwnProperty("toString"))//=>toString  是顶级对象上的自有属性,所以返回true
    13     //prpertyisEnumeralbe 的意思是必是对象上的自有属性而且要以是枚举的,但是对象的可枚举属性Enumeralbe是true,才能返回true
    14     alert(obj.propertyIsEnumerable("x"))   //true x是obj对象上可枚举的属性
    15     alert(obj.propertyIsEnumerable("z"))   //false z是obj原型上的属性,不是自有属性,则不可以枚举
    16     alert(Foo.prototype.propertyIsEnumerable("z")) //true x是原型上的自有属性,所以可以枚举
    17 </script>

    如何枚举属性,枚举属性对于原型又有什么区别?

    演示代码如下:

     1 <script>
     2     function Foo(){}
     3     Foo.prototype.age = 22
     4     var obj = new Foo()
     5     obj.name = "ziksang"
     6     obj.addr = "上海"
     7     obj.telephone = 15921848427
     8     for(var p in obj){     //使用FOR IN 可以枚举出自身的属性和原型上的属性
     9         console.log(p)
    10     }
    11     console.log(Object.keys(obj))  //使用Object.keys(obj)只可以枚举Obj对象上自身的属性
    12     console.log(Object.getOwnPropertyNames(obj))   //Object.getOwnPropertyNames(obj)是列出Ojb对象上自身的属性名,与枚举不相关,但是又类似枚举,大家要注意区分
    13 
    14 </script>
  • 相关阅读:
    maplestory【Lotus prequest】---2.3、bestow
    springboot拦截器过滤token,并返回结果及异常处理
    'axios' is not defined
    MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。
    VS Code(Visual Studio Code)
    学习CSS+HTML+JS到底用什么编辑器或IDE
    SpringBoot整合Mybatis完整详细版 入门资料
    Oracle 导出视图view中的数据
    oracle 时间 比较
    分子对接
  • 原文地址:https://www.cnblogs.com/Ziksang/p/5187691.html
Copyright © 2011-2022 走看看