文档章节

JavaScript中的属性操作

达摩码者
 达摩码者
发布于 2015/04/06 16:07
字数 594
阅读 199
收藏 10

JavaScript中的属性操作

一、 原型链

在js中,任何一个对象都有一个prototype属性,在js中记做:_proto_。

比如,我们创建一个对象:

<!-- lang: js -->
var foo = {
    x:1,
    y:2
}

虽然看起来我们只为foo对象创建了两个属性,实际上,它还有一个属性_proto_,如图: 在此输入图片描述

即使我们不定义_proto_,在js中也会预留一个属性。

如果我们定义一个空对象,foo

<!-- lang: js -->
foo = function(){}
foo.prototype.z = 3;
var obj = new foo();
obj.x = 1;
obj.y =2;
//运行结果
obj //结果是:foo {x: 1, y: 2, z: 3}

很显然。我们并没有给obj定义z值,但是却返回了z值,从这可以看出,obj中没有,它便会顺着原型链向上查找。

此时,我们给obj定义z值:

<!--lang:js-->
obj.z =10;
//运行结果
obj;//返回foo {x: 1, y: 2, z: 10}

接着,删除z属性:

<!--lang:js-->
delete obj.z
//运行结果
obj;//结果是:foo {x: 1, y: 2, z: 3}

可见,我们的删除操作也只是obj上的,并不会对其原型产生影响。

二、属性操作

属性定义:调用Object.defineProperty(object, propertyname, descriptor),三个项都是必须的。

<!-- lang: js -->
Object.defineProperty(obj,'title',{
    value:'helloworld',
});

其中,defineProperty()中的descriptor有四个属性,分别为:

  • value //值
  • enumerable //是否允许for-in进行遍历,默认为true
  • configurable //是否允许使用delete进行操作并重新定义,默认为true
  • writable //是否允许修改,more为true

此外,我们还可以查看属性,通过:Object.getOwnPropertyDescriptor(object, propertyname),两个项都是必须。如:

<!--lang:js-->
var foo = {
	title:'hello'
};
console.log(Obejct.getOwnPropertyDescriptor(obj,'title'));
//运行结果是
//Object {value: "hello", writable: true, enumerable: true, configurable: true}

其次,我们也可以通过for-in来遍历输出每项属性。

<!--lang:js-->
var des = Object.getOwnPropertyDescriptor(obj,'title');
for(var key in des){
    console.log(key+':'+des[key]);
}
//运行结果
//value:hello
//writable:true
//enumerable:true
//configurable:true

补充一点刚才定义属性用的是Object.defineProperty(),如果我们想一次性定义多个属性,只要修改一点就可以:

<!--lang:js-->
Object.defineProperties{person,{
    name:{value:'Gavin',writable:false,enumerable:false},
    salaty:{value:5000,writable:true,enumerable:false},
    sex:{value:'man'}
}}

如果我们已经定义了这些属性,那么如何修改呢,其实也很简单,只要再次定义一下就可以了。

先记录这些,继续学习,继续补充笔记。

© 著作权归作者所有

共有 人打赏支持
达摩码者
粉丝 4
博文 12
码字总数 6735
作品 0
海淀
前端工程师
js调用cs中函数的方法 和 在cs中调用js函数的方法

在前台js代码里写上<%method();%> 举例: cs文件中写的有 public void method() { ....执行某些操作. } 这个函数,然后在前台页面的js里面调用. <script type="text/javascript"> <%method();......

黄献
2012/11/04
0
0
客户端的js js脚本的引入 js的解析过程

web浏览器中的JavaScript web浏览器中的js通常称为客户端的JavaScript 客户端 JavaScript window对象是所有客户端JavaScript特性和api的主要接入点。 即,表示web浏览器一个窗口或窗体。使用...

小小____
08/03
0
0
JavaScript面向对象技术(一)

看了很多JavaScript的书,但是设计到一些具体的JavaScript问题,书也解决不了问题。 这篇文章是参考<<javascript-the definitive guide,5th edition>>第7,8,9章而写成的,我也会尽量按照原书的...

oecp
2011/04/20
0
2
《JavaScript 权威指南》读书笔记 1 - 简介

原文:https://keelii.github.io/2016/06/16/javascript-definitive-guide-note-0/ 第一章 主要介绍 JavaScript 的大概情况、基本语法。之前没有 JavaScript 基础的看不懂也没关系,后续章节...

keelii
2016/06/24
0
0
JS中style属性(网上整理)

解决办法: 1、先定义一个CSS规则,然后this.className='' 2、document.getElementByIdx_x("a").style.cssText="border-collapse:collapse;border-spacing:1;border:1 solid #0B2565;backgro......

The-duke
2014/01/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

各种开源汇编、反汇编引擎的非专业比较

由于平时业余兴趣和工作需要,研究过并使用过时下流行的各种开源的x86/64汇编和反汇编引擎。如果要对汇编指令进行分析和操作,要么自己研究Intel指令集写一个,要么就用现成的开源引擎。自己...

simpower
8分钟前
1
0
(4)添加vue-router

(4)添加vue-router 1 安装vue-router cnpm install vue-router --save 2 页面准备 新建目录/src/views/common,此目录下面建立4个组件404.vue、home.vue、login.vue、theme.vue。每个文件...

neumeng
10分钟前
1
0
高可用性系统在大众点评的实践与经验

背景 所谓高可用性指的是系统如何保证比较高的服务可用率,在出现故障时如何应对,包括及时发现、故障转移、尽快从故障中恢复等等。本文主要以点评的交易系统的演进为主来描述如何做到高可用...

Skqing
18分钟前
2
0
Network protocols

The network stack does serveral seemingly-impossible things. It does reliable transmission over our unreliable networks, usually without any detactable hiccups. It adapts smooth......

nao
20分钟前
1
0
Android 生命周期方法

1,onCreate(); 2,onStart(); 3,onResume(); //打开页面,前三个方法自动执行 4,onPause(); 5,onStop(); //打开其他页面,前一个页面执行这俩方法 6,onRestart(); //onStart(),onResume //当关闭...

lanyu96
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部