《JavaScript编程精粹》——对象篇
来源:互联网 发布:人工智能上市公司排名 编辑:程序博客网 时间:2024/05/16 06:14
检索
- 利用||填充对象的默认值
var status = res['status'] || 'unkown'
- 如果res[‘status’]是undefined那么status的值就是’unkown’
- 利用&&避免TypeError错误
- 如果
flight.equipment
已经是undefiled - 我们想获取
flight.equipment.model
就会报TypeError错误 - 利用
flight.equipment && flight.equipment.model
可以预防出现这种错误
- 如果
原型
- 当创建一个新对象时,可以选择某个对象作为它的原型
- 每个对象都连接着一个原型对象,并且原型对象的属性会被连接其的对象继承
- 简化创建对象时指定原型
var stooge = { 'first-name': 'Jerome', 'last-name': 'Howard'};if (typeof Object.beget !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}//another_stooge的原型是stoogevar another_stooge = Object.create(stooge);/*创建的对象为F {} __proto__: //这是原型链 first-name: "Jerome" last-name: "Howard"*/
- 更新对象的属性时,不会更新已连接的原型,在检索时才会被用到
if (typeof Object.beget !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); };}var stooge = { 'first-name': 'Jerome', 'last-name': 'Howard'};//another_stooge的原型是stoogevar another_stooge = Object.create(stooge);//给another_stooge的原型stooge添加profession属性stooge.profession = 'actor';/*此时原型链属性为F {} __proto__: first-name: "Jerome" last-name: "Howard" profession: "actor"*/console.log(another_stooge.profession === 'actor') //结果是true//我们并没有给another_stooge添加profession属性//但结果是true//以此说明检索属性时,如果本对象没有,会从原型链中查找,即从__proto__中查找//新增属性another_stooge.profession = 'driver'console.log(stooge.profession) //结果是actorconsole.log(another_stooge.profession) //结果是driver//通过给another_stooge新增profession来说明//更新本对象的属性值,不会影响到原型中相同名字的属性值
反射
- 利用typeof可以确定属性的类型,但是原型中的属性一样会被辨认出来,利用hasOwnProperty判断属性是否为对象本身的属性,可以避免typeof读取到原型的属性类型
//省略了 Object.createvar stooge = { 'first-name': 'Jerome', 'last-name': 'Howard'};//another_stooge的原型是stoogevar another_stooge = Object.create(stooge);//给another_stooge的原型stooge添加profession属性stooge.profession = 'actor';console.log(typeof another_stooge.profession) //此处值为string//但是another_stooge是没有profession的//可以这样写,确定是对象本身的属性后才去做类型判断if (another_stooge.hasOwnProperty('profession')) { console.log(typeof another_stooge.profession)}
枚举
- for in可以遍历一个对象中所有的属性名,包括函数和原型中的属性,可以进行过滤,另外for in是无序的,需要有序时不应使用for in
- 过滤方法一hasOwnProperty排除原型中的属性
- 过滤方法二typeof排除函数
减少全局变量的污染
- 使用一个自定义标识的全局变量
var Vue = {};Vue.data = { 'first-name': 'Jerome', 'last-name': 'Howard'};Vue.flight = { airline: 'dbdddurex'};//这种情况下Vue就是自己定义的“一个”全局变量//这一个全局变量里面有几个变量都没关系,不会污染其他全局变量
阅读全文
0 0
- 《JavaScript编程精粹》——对象篇
- 《JavaScript编程精粹》——函数篇
- JavaScript编程精粹——继承篇
- Javascript 语言精粹——对象 Object
- JavaScript语言精粹——对象
- 《JavaScript 语言精粹》 学习笔记 —— 第三章 对象
- JavaScript语言精粹学习笔记(2)——对象
- 《JavaScript语言精粹》学习笔记——3.对象
- 【JavaScript语言精粹】读书笔记(二)——对象
- JavaScript语言精粹之对象篇
- javascript语言精粹(对象)
- JavaScript编程精粹
- JavaScript 精粹 基础 进阶(8)OOP面向对象编程(上)
- JavaScript 精粹 基础 进阶(9)OOP面向对象编程(下)
- javascript语言精粹_对象
- JavaScript语言精粹——语法
- JavaScript语言精粹——函数
- JavaScript语言精粹——继承
- 快排之C++
- centos6安装nginx1.7.9+php5.6.4+mysql5.6
- linux expr命令参数及用法详解
- vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
- Caffe学习系列(12):训练和测试自己的图片
- 《JavaScript编程精粹》——对象篇
- DMP文件查看方法
- 写给java web一年左右工作经验的人
- MySQL与Oracle的区别
- 使用反射获取Spring的Bean
- 计组第一步_时序电路
- 梦中不知岁已老,朦胧人间谁登高
- Android开发——Android中常见的4种线程池(保证你能看懂并理解)
- js闭包