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()方法可以通过描述符一次定义多个属性;这个方法接收两个对象参数:第一个对象是要添加和修改其属性的对象,第
二个对象的属性与第一个对象中要添加或修改的属性一一对应;例如:


五、读取属性的特性


JS面向对象的程序设计之理解对象的更多相关文章
- js面向对象的程序设计 --- 上篇(理解对象)
前言 ECMAScript中没有类的概念,因此它们的对象与基于类的语言中的对象有所不同. ECMA-262把对象定义为:"无序的集合属性,其属性可以包含基本值,对象或者函数".正因 ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- javascript 面向对象程序设计--深刻理解对象
javascript中,每个对象都是基于一个引用类型创建的,我们可以把ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. 深刻理解对象 创建自定义对象的最简单方式就 ...
- JS面向对象的程序设计
面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义J ...
- 《JavaScript高级程序设计》第六章【面向对象的程序设计】 包括对象、创建对象、继承
一.理解对象 二.创建对象 1. 工厂模式 2. 构造函数模式 3. 原型模式 4. 组合使用构造函数模式和原型模式[使用最广泛] 5. 动态原型模式 ...
- js的面向对象的程序设计之理解继承
来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(六) 先来解析下标题——对象和继承~ 一.对象篇 ECMA-262把对象的定义为:&qu ...
- 大话JS面向对象之开篇万物皆对象------(ATM取款机引发的深思)
一,总体概要 OO(面向对象)概念的提出是软件开发工程发展的一次革命,多年来我们借助它使得很多大型应用程序得以顺利实现.如果您还没有掌握并使用OO进行程序设计和开发,那么您无疑还停留在软件开发的石器时 ...
- js面向对象的程序设计 --- 下篇 继承启蒙
继承是oo语言中一个最为人津津乐道的概念.ECMAScript支持实现继承,而且实现继承只要是靠原型链来实现的 ·原型链 其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 简单回顾一 ...
随机推荐
- [2017-8-02]Android Learning Day8
自定义动画效果 新建一个customAnim类 package com.liwenchi.myapplication; import android.view.animation.Animation; ...
- 查看Ubuntu的显卡信息
lspci -vnn|grep VGA -A 12 查看openGL信息: sudo apt install mesa-utils glxinfo|grep OpenGL -A 12
- push的时候报错:Permission denied (publickey)
最近,在push的时候遇到一个问题,简单描述下过程(git客户端命令行操作) 我先在本地建了一个文件夹,mkdir dubbodemo 然后进入到这个文件夹,cd dubbodemo 添加我的内容 初 ...
- NOIP2011Mayan游戏(模拟)
Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个77 行\times 5×5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指 ...
- react-native中的触摸事件
移动应用上的用户交互基本靠"摸".当然,"摸"也是有各种姿势的:在一个按钮上点击,在一个列表上滑动, 或是在一个地图上缩放.React Native 提供了可以 ...
- MongoDB 学习记录(一)
前言:之前一直只是简单了解MongoDB,而且是随便看看的那种,今天决定好好的整理一下,以便自己能 温故而知新 1.MongoDB是什么 MongoDB 是一个高性能,开源,无模式的文档型数据库,开 ...
- 第十五节、韦伯局部描述符(WLD,附源码)
纹理作为一种重要的视觉线索,是图像中普遍存在而又难以描述的特征,图像的纹理特征一般是指图像上地物重复排列造成的灰度值有规则的分布.纹理特征的关键在于纹理特征的提取方法.目前,用于纹理特征提取的方法有很 ...
- 第五节,TensorFlow编程基础案例-session使用(上)
在第一节中我们已经介绍了一些TensorFlow的编程技巧;第一节,TensorFlow基本用法,但是内容过于偏少,对于TensorFlow的讲解并不多,这一节对之前的内容进行补充,并更加深入了解讲解 ...
- 4.1、实现4个LED灯同时闪烁
图中可以看出,P1的0.1.3.4引脚分别连接着4个LED.控制引脚状态,来控制LED. #include "ioCC2530.h" //引用CC2530头文件 /******** ...
- Tomcat源码组织结构
Tomcat 源码组织结构 目录结构 这里所介绍的目录结构,是使用CATALINA-BASE变量定义的路径,如果没有通过配置多个CATALINA-BASE目录来使用多实例,则CATALINA-BASE ...