js的数据属性:P139
(1)[[Configurable]]
(2)[[Enumerable]]
(3)[[Writable]]
(4)[[Value]]

使用Object.definerPropert()方法修改属性的默认值,接收的参数:
(1)属性所在的对象
(2)属性的名字
(3)一个描述符对象(Configurable,Enumerable,Writable,Value)

 // 'use strict'
var person = {
name: "Jack",
age: 12,
job: "Software Engineer",
sayname: function(){
console.log(this.name);
}
};
console.log(person.name);//Jack person.name = "Mei";
console.log(person.name);//Mei Object.defineProperty(person,"name",{
writable: false,
value: "Nice"
})
console.log(person.name);//Nice person.name = "Li";//在非严格模式下,赋值操作会被忽略,严格模式下,会抛出错误。Uncaught TypeError: Cannot assign to read only property 'name' of object '#<Object>'
console.log(person.name);//Nice Object.defineProperty(person, "name", {
configurable: false,//设置为false则不能修改属性的特性。
value: "Nice"
}) Object.defineProperty(person, "name", {
configurable: true, // TypeError: Cannot redefine property: name at Function.defineProperty (<anonymous>) at js_tesr.html:37
value: "Nice"
}) Object.defineProperty(person,"name",{
writable:true //Uncaught TypeError: Cannot redefine property: name at Function.defineProperty (<anonymous>)
//将writable设置为false则不报错。
}) Object.defineProperty(person,"name",{});//疑问:P140倒数第三行: 三个属性默认为false,但是这里还是可以修改name的属性值。
person.name = "Li";
console.log(person.name);//Li //2.访问器属性
//设置一个属性导致其他属性发生变化 var book = {
year:2004,
edition : 1
}; Object.defineProperty(book,'year',{
//get:在读取属性时调用的函数
get: function(){
return this._year;//_下划线表示只能通过对象方法访问到的属性
}, //set:在写入属性时调用的函数
set: function(newValue){
if(newValue > 2004){
this._year = newValue;
this.edition += newValue - 2004;
}
}
}); book.year=2005;
console.log(book.edition);// //访问器属性——模拟vue双向数据绑定功能。
var obj ={};
Object.defineProperty(obj, "hello",{
//写入属性时调用的函数
set :function(newVal){
document.getElementById("input").value = newVal;
document.getElementById("content").innerHTML = newVal;
}
});
document.addEventListener("keyup",function(e){
obj.hello = e.target.value;
});

JS_高程6.面向对象的程序设计(1)理解对象的更多相关文章

  1. js面向对象的程序设计 --- 上篇(理解对象)

    前言 ECMAScript中没有类的概念,因此它们的对象与基于类的语言中的对象有所不同. ECMA-262把对象定义为:"无序的集合属性,其属性可以包含基本值,对象或者函数".正因 ...

  2. JS_高程6.面向对象的程序设计(2)创建对象_1

    一.创建对象的常见方法 (1)Object构造函数创建单个对象,早期的JavaScript开发人员经常使用该模式创建新对象. var person=new Object(); person.name= ...

  3. JS_高程6.面向对象的程序设计(2)创建对象_3 构造函数存在的问题

    # 上次讲到用构造函数的模式来创建对象,相对于工厂模式,解决可对象识别的问题. function Person(name,age,job){ this.name=name; this.age=age; ...

  4. JS_高程6.面向对象的程序设计(2)创建对象_2 构造函数也是一般函数

    1.构造函数也是一般函数,以下创建一个构造函数. var Person=function(name,age,job){ this.name=name; this.age=age; this.job=j ...

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

    一.对象定义 (1)ECMAScript中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同: (2)ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数” 二. ...

  6. javascript 面向对象程序设计--深刻理解对象

    javascript中,每个对象都是基于一个引用类型创建的,我们可以把ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. 深刻理解对象 创建自定义对象的最简单方式就 ...

  7. JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)

    一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...

  8. JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)

    一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...

  9. 《JavaScript高级程序设计》第六章【面向对象的程序设计】 包括对象、创建对象、继承

    一.理解对象 二.创建对象      1. 工厂模式      2. 构造函数模式      3. 原型模式      4. 组合使用构造函数模式和原型模式[使用最广泛]      5. 动态原型模式 ...

随机推荐

  1. Aho-Corasick算法实现(简单关键字过滤)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  2. la 4490

    题解: 这道思路还是比较水的 我们可以等价变形成hi<=7 我们的最优决策是把抽出来的那些相同颜色的书最后插在一起(所以要统计序列中还有没有相同元素的书) f[i][j][k][x]表示前i本书 ...

  3. 【BZOJ1417】Pku3156 Interconnect

    题解: 比较简单的一道题 显然我们只需要知道每个联通块的大小就可以了 然后发现x1+xn=30 其中xi<=xi+1的状态只有5000 所以直接记忆化搜索就可以了 emm原来map还可以映射ve ...

  4. ssh连接时提示THE AUTHENTICITY OF HOST XX CAN’T BE ESTABLISHED

    ssh链接云主机: ssh root@123.59.xx.xx 报错:THE AUTHENTICITY OF HOST XX CAN’T BE ESTABLISHED 解决办法: ssh -o Str ...

  5. 获取本地的ip,地址,code

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. python--pip出错

    问题: 1.使用pip install时,出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None) ...

  7. sql 的一些总结

    如果用到“每”  就要用到group  by   例:每个部门有多少人,就要用到分组技术 聚合函数一般作用在多条记录上 having 是分组厚的筛选条件,分组厚的数据组内再筛选,where 则是在分组 ...

  8. README 语法记录

    转自:nblogs.com/liugang-vip/p/6337580.html 正文: 1.标题的几种写法: 第一种:     前面带#号,后面带文字,分别表示h1-h6,上图可以看出,只到h6,而 ...

  9. 错误 在类中找不到main方法请将main方法定义为 public static void main String args否则JavaFX应用程序类必须扩展javafx-ap

    最近在使用eclipse编写java程序时遇到这样一个问题: 错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 J ...

  10. 从零搭建 ES 搜索服务(二)基础搜索

    一.前言 上篇介绍了 ES 的基本概念及环境搭建,本篇将结合实际需求介绍整个实现过程及核心代码. 二.安装 ES ik 分析器插件 2.1 ik 分析器简介 GitHub 地址:https://git ...