1、理解对象:

创建自定义对象最简单的方式就是创建一个object实例,再给他添加属性和方法。

let person = new Object();
person.name = 'zhangsan';
person.age = 25;
person.sayName = function (){alert(this.name)};
//=============================

以上实例现在可以这样写:

let person = {
name:'zhangsan',
age:25
sayName:function(){
alert(this.name);
}
}

2、属性类型

  数据属性,访问器属性

Value:这个属性的属性值

let person = {};
Object.defineProperty(person,"name",{
value:"ZhangSan"
});
let person = {};
Object.defineProperty(person,"age",{
value:25
});

Configurbale:表示是否能通过Delete删除属性并重定义,能否修改属性的特性,这个属性的默认值是true;

let person = {};
Object.defineProperty(person,"name",{
configurable:true,
value:"ZhangSan"
});
Object.defineProperty(person,"age",{
configurable:false,
value:25
});
delete person.name;
delete person.age;
alert(person.name);//输出 undefined
alert(person.age);//输出 25 Object.defineProperty(person,"age",{
configurable:true,//抛出错误,configurable为false后无法重定义;
value:25
});

Enumable:为false的时候无法for-in循环返回属性,当使用new Object创建实例的时候默认是false,直接定义为true;

Writable:是否可以修改属性的值,默认是true;

let person = {};
Object.defineProperty(person,"name",{
writable:true,
value:"ZhangSan"
});
Object.defineProperty(person,"age",{
writable:false,
value:25
});
person.name = 'lisi';
person.age = 33;
alert(person.name);//输出 lisi
alert(person.age);//输出 25

访问器属性不包含数值,它们包含一对getter和setter函数;

Get:Set:默认值都是undefined

let book = {
edition: 1
};
Object.defineProperty(book, "_year", {
get: function () {
return this.year;
},
set: function (newValue) {
if (newValue > 2004) {
this.year = newValue;
this.edition += newValue - 2004;
console.log(newValue);
}
}
});
book.year = 2005;
alert(book.year);// 输出2005
alert(book.edition);// 输出2

在不支持Object.defineProperty()方法的浏览器中不能修改[Configurable],和[Enumerable]。

3、定义多个属性

let book = {};
Object.defienProperties(book,{
year:{
writable:true,
value:2004
}
edition:{
writable:true,
value:1
}
});

4、读取属性的特性

==

JavaScript面向对象--记录防忘记(一)的更多相关文章

  1. JavaScript学习记录三

    title: JavaScript学习记录三 toc: true date: 2018-09-14 23:51:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  2. javascript面向对象系列第一篇——构造函数和原型对象

    × 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如 ...

  3. Javascript知识点记录(三)设计模式

    Javascript设计模式记录,这个方面确实是没写过,工作中也没有用到js设计模式的地方. prototype与面向对象取舍 使用prototype原型继承和使用面向对象,都可以实现闭包的效果.那么 ...

  4. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  5. 再谈javascript面向对象编程

    前言:虽有陈皓<Javascript 面向对象编程>珠玉在前,但是我还是忍不住再画蛇添足的补上一篇文章,主要是因为javascript这门语言魅力.另外这篇文章是一篇入门文章,我也是才开始 ...

  6. 《JavaScript面向对象编程指南》读书笔记②

    概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的 ...

  7. 《JavaScript面向对象编程指南》读书笔记①

    概述 JavaScript快忘完了,想看一本专业书拾遗,所以看了这本<JavaScript面向对象编程指南>. 个人觉得这本书讲的很透彻很易懂,一些原来有疑惑的地方在这本书里面豁然开朗,看 ...

  8. 闭包初体验 -《JavaScript面向对象编程指南》

    下面是我对闭包的理解:(把他们整理出来,整理的过程也是在梳理) 参考<JavaScript面向对象编程指南> 1.首先,在理解闭包之前: 我们首先应该清楚下作用域和作用域链 作用域:每个函 ...

  9. JavaScript面向对象小抄集

    前言 本文旨在记录JavaScript中面向对象的基础知识 搞明白JavaScript中的面向对象 一切都是对象 JavaScript中,除了基本类型外,其它类型都是对象类型 所谓对象就是若干属性的集 ...

随机推荐

  1. 反射获取Class对象

    实际演示

  2. 给普通用户添加root权限

    >>提君博客原创  http://www.cnblogs.com/tijun/  << 第一步,以root用户查看/etc/sudoers [root@ltt2 hadoop] ...

  3. 【转】说说MySQL中的Redo log Undo log都在干啥

    阅读目录(Content) 1 undo 1.1 undo是啥 1.2 undo参数 1.3 undo空间管理 2 redo 2.1 redo是啥 2.2 redo 参数 2.3 redo 空间管理 ...

  4. 每日一小时linux(1)--sysRq

    参考https://www.ibm.com/developerworks/cn/linux/l-cn-sysrq/index.html SysRq 是什么 你是否遇到服务器不能通过 SSH 登录,也不 ...

  5. 压测工具使用(vegeta)

    一.压测工具vegeta 1.介绍 Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库. 官方地址:https://github.com/tsen ...

  6. 莫烦theano学习自修第八天【分类问题】

    1. 代码实现 from __future__ import print_function import numpy as np import theano import theano.tensor ...

  7. ORACLE 增加两列字段

    declare v_cnt number; V_SQL VARCHAR2 (500) := '';begin select count(*) into v_cnt from dual where ex ...

  8. openblas下载安装编译

    编译好的库: https://github.com/JuliaLinearAlgebra/OpenBLASBuilder/releases 源码编译 下载:https://github.com/xia ...

  9. layui laydate设置当前日期往后不可选

    layui laydate设置当前日期往后不可选 laydate.render({ elem: '#demo', max: maxDate() }); // 设置最大可选的日期 function ma ...

  10. BZOJ4514[Sdoi2016]数字配对——最大费用最大流

    题目描述 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对,并获得 ci ...