Part One:对象的创建
对象的创建,可以使用new Object() 或者 Object.creat(),该方法为静态函数
var foo = Object.create({x:1,y:2});  //foo是一个空对象,该_proto_对象为{x:1,y:2};
 
如何创建一个没有原型的对象?bar不继承任何属性和方法
var bar = Object.create(null);

创建一个普通的对象,继承Object的原型, o1的创建类似于用new的方法创建一个新的空对象
var o1 = Object.create(Object.prototype);
 
Object.create()方法可以通过任意原型创建对象,换句话说,可以使任意对象可继承,这是个强大的特性。

在JavaScript的继承算是一个原型的继承的另一种方法。

Part Two:对象的删除
JavaScipt对象都是关联数组。
对象属性的删除:var foo = {x:1,y:2}
delete foo.x;  //true
foo里面只有y一个属性了,delete操作只能删除该对象的自有属性,不能删除继承的属性。
要删除继承属性,必须从原型对象上面进行删除 。

let a = {p: {x: 1}};
let b = a.p;
//销毁对象时候要遍历属性中的属性,依次删除
for (let item in a) {
for (let ii in a[item]) {
delete a[item][ii]
}
delete a[item]
}

Part Three:对象属性的检测
var foo = {x:1};
"x" in foo //true,可以检测到原型上面的属性
foo.hasOwnProperty("x") // true,只能检测自身固有属性,不能检测原型上面的属性
foo.x !== 'undefined' // true,不能检测属性值为undefined的属性

对象的遍历用for/in
对于对象所有的自身属性的获取,两个方法:Object.keys(foo) //["x"]
Object.getOwnPropertyNames(foo) //["x"]

Part Four:属性setter 和 getter
对象中的属性值可以用一两个方法代替,setter和getter。这种属性叫“存取器属性”。
js查询的时候调用getter(无参数),有返回。设置属性值的时候调用setter,忽略返回值。
如果一个属性同时具有setter和getter,那它就是一个读/写属性,如果只有getter,只读属性,只有setter,只写属性,读取只写属性的时候返回undefined。

var hh = {
$n:0,
get next(){return this.$n++;},
set next(n){
if(n>= this.$n) this.$n = n;
else throw 'too young';
}
}
每调用一次hh或者hh.next,hh里面的$n,next属性值都会+1,经过五次调用之后,hh是这样的:

使用getter的方法,可以给一个对象里面添加多个属性方法

对象属性有一个属性名和4个特性(值:value,可写性:writable,可枚举性:enumerable,可配置性:configurable)

存取性属性的4个特性(get(代替value),set(代替writable),enumerable,configurable)

想要设置属性的特性 Object.defineProperty(o,'x',{属性配置的参数});设置多个属性Object.defineProperties();

 

JavaScript对象(一)的更多相关文章

  1. json与JavaScript对象互换

    1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...

  2. javaScript对象-基本包装类型的详解

    本人按书上的内容大致地把javaScript对象划分成“引用类型”.“基本包装类型”和“内置对象”三块内容. 我们这篇先了解下基本包装类型的详细用法吧! 一.我们先解下相关概念: 1.引用类型的值(对 ...

  3. 如何理解javaScript对象?

    在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们 ...

  4. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  5. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  6. Javascript对象的方法赋值

    Javascript对象编程学习中,一直不能很好的掌握对象的属性(property)和方法(method).今天在写代码过程中,又犯了一个低级错误. <!DOCTYPE html> < ...

  7. web前端学习(二) javascript对象和原型继承

    目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...

  8. 如何判断Javascript对象是否存在

    Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: ...

  9. JavaScript 对象、DOM对象、jquery对象的区别、转换详解

    一.JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性: [javascrip ...

  10. 关于javascript对象的简单记忆法

    关于javascript对象方法的简单记忆法(个人整理) string对象: 大号小号闪烁加链接./big/small/blink/link/ 粗体斜体打字删除线./bold/italics/fixe ...

随机推荐

  1. 奇点云数据中台技术汇(一) | DataSimba——企业级一站式大数据智能服务平台

    在这个“数据即资产”的时代,大数据技术和体量都有了前所未有的进步,若企业能有效使用数据,让数据赚钱,这必将成为企业数字化转型升级的有力武器. 奇点云自研的一站式大数据智能服务平台——DataSimba ...

  2. 实现JS脏话筛选替换的几种途径

    一.逐个替换用replace 缺点:筛选的脏话集太少 var oSize = $(this).siblings('.flex-text-wrap').find('.comment-input').va ...

  3. JVM组成与作用

    class loader 类加载器:加载类文件到内存.Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的.exectio ...

  4. 整理struct sockaddr和struct sockaddr_in

    struct sockaddr定义在/usr/include/linux/socket.h struct sockaddr { unsigned short ss_family; - } struct ...

  5. 最小生成树 HihoCoder-1097、1098、1109(最小生成树算法)

    太久没写最小生成树了,快忘光了.这几天回顾了一下 最小生成树一·Prim算法 AC G++ 369ms 17MB #include "cstdio" using namespace ...

  6. 输入一个url之后到底发生了什么 - Hurry

    背景 最近学习到 nginx 方向代理发现,nginx 可以将你的请求以 http 块的 server 形式代理到请求的域名或者 ip 地址. 一个简单的 nigx 配置如下: 12345678 se ...

  7. 植物基因组|注释版本问题|重测序vs泛基因组

    生命组学: 细菌和其他物种比,容易发生基因漂移,duplication和重排. 泛基因组学研究的一般思路是通过comparison找到特殊基因区域orspecific gene,研究其调控机制(即通过 ...

  8. pycharm中进行全局搜索

  9. 吴裕雄--天生自然python编程:turtle模块绘图(2)

    #彩色螺旋线 import turtle import time turtle.pensize(2) turtle.bgcolor("black") colors = [" ...

  10. idea如何使用git

    1.安装好git(我下载的2.23.0版本百度网盘分享)  提取码  7ie1 2.配置git环境变量  Path   路径是你安装的git 目录下的bin目录   安装好后窗口命令输入git 可以测 ...