博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 面向对象编程 · 理解对象
阅读量:6916 次
发布时间:2019-06-27

本文共 1964 字,大约阅读时间需要 6 分钟。

前言:

     在我们深入 面向对象编程之前 ,让我们先理解一下Javascript的 对象(Object),我们可以把ECMAScript对象想象成散列表,其值无非就是一组名值对,其中值可以是数据或者函数;
 
主要内容
 
1.1  理解并创建对象
  •        创建自定义对象最简单方式—— 使用对象字面量
  1. var car = {"wheels":4,"engines":1,"seats":5};
  •   除了上一种方法外,我们还可以使用构造函数来创建对象。

构造函数 通常使用大写字母开头,以便把自己和其他普通函数区别开。

下面便是一个 构造函数 了:

  1. var Car = function() {this.wheels = 4;this.engines = 1;this.seats = 1;};

    在 构造函数 中, this 指向被此 构造函数 创建出来的 对象 。

  2. var myCar = new Car();
    myCar现在成为Car的一个实例。使用
new 关键字 去调用构造函数。因为只有这样,Javascript才知道这是要去构造一个新
对象 ,并且把构造函数中的
this 指向这个新对象
  •  使用Object.create()创建一个具有指定原型且可选择性地包含指定属性的对象。
    var obj = Object.create({ foo: 1 }, { // foo is an inherit property.  bar: {    value: 2  // bar is a non-enumerable property.  },  baz: {    value: 3,    enumerable: true  // baz is an own enumerable property.  }});

     

 1.2 属性类型

   1.数据属性:数据属性包含一个数据值的位置,在这个位置可以读取和写入值.言下之意即,数据属性是可以直接通过对象.属性的形式访问和赋值的。

  •  [[Configurable]]
  •  [[Enumerable]]
  •  [[Writable]]
  •  [[Value]]
var person = {        name : "Nicholas"    }//里面的name属性是数据属性

Object.defineProperty()方法接收三个参数,属性所在的对象,属性的名字和一个描述符对象。设置其中一个或多个值,可以修改对应的特性值。

通过 Object.defineProperty() 方法,可以创建数据属性(并设定其[[Enumerable]]等内部属性),也可以创建访问器属性(访问器属性仅包含 getter  setter函数,当然这两个也不是必须的)。

        2.访问器属性:允许用户在赋值或取值都经过预先设定的函数,从而实现内部属性的那一种特殊效果。

  •  [[Configurable]]
  •  [[Enumerable]]
  •  [[Get]]
  •  [[Set]]
 举个例子
var book = {    _year : 2004,//_year前面下划线是常用的记号,表示只能通过对象方法访问的属性    edition : 1};Object.defineProperty(book,"year",{     get : function () {        return this._year;    },    set : function (newValue) {        if (newValue > 2004) {            this._year = newValue;            this.edition += newValue - 2004;        }    }}); book.year=2005; alert(book.edition); // 2

上述中,book.year 是访问器属性。直接调用 book.year,即调用了这个访问器属性中定义的 get 方法,返回 book._year 这个数据属性。如果给 book.year 赋值,就是调用了这个访问器属性中定义的 set 方法。

默认值

如果你不明确的指定某个特性的值,则它们会被赋一个默认值:

特性名称 默认值
[[Value]] undefined
[[Get]] undefined
[[Set]] undefined
[[Writable]] false
[[Enumerable]] false
[[Configurable]] false

这些默认值对于属性描述符尤其重要.

 
 

转载于:https://www.cnblogs.com/kasmine/p/6411461.html

你可能感兴趣的文章
linux常用基础命令
查看>>
linux 如何用命令注销x Window
查看>>
NameNode内存详解
查看>>
创建一个android的Splash Screen
查看>>
Backup Exec 2012 使用前的基本配置
查看>>
示例A(聊天应用程序)之源代码
查看>>
站点备份脚本
查看>>
走出IT管理员与IT工程师的误区
查看>>
Android及iOS版谷歌地图推出相关广告功能
查看>>
GitHub使用简介: github如何使用
查看>>
Spark1.2.1集群环境搭建——Standalone模式
查看>>
ospf的基础与邻居,邻接关系 --理论
查看>>
我的友情链接
查看>>
python linux 下安装 pip 和 bs4
查看>>
漏洞扫描及MBSA的使用
查看>>
shell 求交集
查看>>
find和tar命令的使用
查看>>
docker-compose 常用命令参数解释
查看>>
kali手动休眠
查看>>
回归分析模型优劣判断
查看>>