• JS面向对象的程序设计之理解对象


    一、对象定义

     (1)ECMAScript中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同;

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

    二、创建对象的方法

     (1)创建一个Object实列,然后再为它添加属性和方法

    var person = new Object();
    person.name = "Mary";
    person.age = 18;
    person.job = "Software Engineer";
    
    person.sayName = function() {
        alert(this.name);  
    }

     (2)用对象字面量创建对象

    var person = {
        name: "Mary",
        age: 29,
        job: "Software Engineer",
    
        sayName: function() {
            alert(this.name); 
        }
    };

    三、属性类型

      ECMA-262第五版在定义只有内部采用的特性时,描述了属性的各种特征;ECMA-262定义这些特性是为了实现JavaScript引擎用的,因此在

      JavaScript中不能直接访问它们;为了标识特性时内部值,该规范把它们放在了两对儿括号中

     (1)数据属性

            数据属性包括一个数据值的位置,在这个位置可以读取和写入值;数据属性有4个描述其行为的特性:

                  

         要修改属性默认值的特性,必须使用ECMAScript 5的Object.defineProperty()方法;这个方法接收三个参数:属性所在的对象、属性的名字

         和一个描述符对象;其中描述对象的属性必须是:configurable、enumerable、writable和value;设置其中的一个或多个值,可以修改对应

         的特性值;例如:

                    

            这个例子创建了一个名为name的属性,它的值"Nicholas"是只读的;这个属性的值是不可修改的,如果尝试为它指定新值,则在非严格模

         式下,赋值操作将被忽略;在非严格模式下,赋值操作将会导致抛出错误

     (2)访问器属性

         访问器属性不包括数据值;它们包含一对getter和setter函数(这两个函数都不是必须的);在读取访问器属性时,会调用getter函数,这个

         函数负责返回有效的值;在写入访问器属性时,会调用setter函数并传入新值,这个函数负责决定如何处理数据;访问器属性有如下4个特性:

                 

                 

    四、定义多个属性

      利用Object.defineProperties()方法可以通过描述符一次定义多个属性;这个方法接收两个对象参数:第一个对象是要添加和修改其属性的对象,第

      二个对象的属性与第一个对象中要添加或修改的属性一一对应;例如:

            

            

    五、读取属性的特性

            

            

  • 相关阅读:
    tableview加tap手势,cell点击无效了
    设置UISlider的ThumbImage,图片非常模糊, 使用代码生成图片就OK了
    思考阿里巴巴系的前端解决方案
    箭头函数和普通函数区别
    webpack
    this.$nextTick
    Node使用path和fs进行目录替换
    new操作符及原理
    javascript的设计模式发布订阅者模式
    vue2 和 vue3 对比
  • 原文地址:https://www.cnblogs.com/soldierback/p/10697702.html
Copyright © 2020-2023  润新知