mdn definepropertyy怎么读

ECMAScript 6 and React(9)
/library/dd548687(v=vs.94).aspx
将属性添加到对象,或修改现有属性的特性。
Object.defineProperty(object, propertyname, descriptor)
必需。&&要在其上添加或修改属性的对象。&&这可能是一个本机 JavaScript 对象(即用户定义的对象或内置对象)或 DOM 对象。&&
propertyname
必需。&&一个包含属性名称的字符串。&&
descriptor
必需。&&属性描述符。&&它可以针对数据属性或访问器属性。&&
已修改对象。
可使用&Object.defineProperty&函数来执行以下操作:
向对象添加新属性。&&当对象不具有指定的属性名称时,发生此操作。&&
修改现有属性的特性。&&当对象已具有指定的属性名称时,发成此操作。&&
描述符对象中会提供属性定义,用于描述数据属性或访问器属性的特性。&&描述符对象是&Object.defineProperty&函数的参数。&&
若要向对象添加多个属性或修改多个现有属性,可使用&。
如果以下任一条件为 true,则引发&TypeError&异常:
object&参数不是对象。
此对象不且指定的属性名称不存在。
descriptor&具有&value&或&writable&特性,并且具有&get&或&set&特性。
descriptor&具有&get&或&set&特性,上述特性不是函数且已定义。
指定的属性名称已存在,现有属性具有&false&的&configurable&特性,且&descriptor&包含一个或多个与现有属性中特性不同的特性。&&但是,当现有属性具有&false&的&configurable&特性和&true&的&writable&特性时,则允许&value&或&writable&特性不同。&&
在以下示例中,Object.defineProperty&函数向用户定义的对象添加数据属性。&&若改为向现有的 DOM 对象添加属性,则取消对&var
= window.document&行的注释。&&
var newLine = &&br /&&;
// Create a user-defined object.
var obj = {};
// Add a data property to the object.
Object.defineProperty(obj, &newDataProperty&, {
value: 101,
writable: true,
enumerable: true,
configurable: true
// Set the property value.
obj.newDataProperty = 102;
document.write(&Property value: & + obj.newDataProperty + newLine);
// Output:
// Property value: 102
若要列出对象属性,请将以下代码添加到此示例中。
var names = Object.getOwnPropertyNames(obj);
for (var i = 0; i & names. i++) {
var prop = names[i];
document.write(prop + ': ' + obj[prop]);
document.write(newLine);
// Output:
newDataProperty: 102
若要修改对象的属性特性,请将以下代码添加到前面所示的&addDataProperty&函数。&&&descriptor&参数只包含&writable&特性。&&其他数据属性特性保持不变。&&
// Modify the writable attribute of the property.
Object.defineProperty(obj, &newDataProperty&, { writable: false });
// List the property attributes by using a descriptor.
// Get the descriptor with Object.getOwnPropertyDescriptor.
var descriptor = Object.getOwnPropertyDescriptor(obj, &newDataProperty&);
for (var prop in descriptor) {
document.write(prop + ': ' + descriptor[prop]);
document.write(newLine);
// writable: false
// value: 102
// configurable: true
// enumerable: true
在以下示例中,Object.defineProperty&函数向用户定义的对象添加访问器属性。
var newLine = &&br /&&;
// Create a user-defined object.
var obj = {};
// Add an accessor property to the object.
Object.defineProperty(obj, &newAccessorProperty&, {
set: function (x) {
document.write(&in property set accessor& + newLine);
this.newaccpropvalue =
get: function () {
document.write(&in property get accessor& + newLine);
return this.
enumerable: true,
configurable: true
// Set the property value.
obj.newAccessorProperty = 30;
document.write(&Property value: & + obj.newAccessorProperty + newLine);
// Output:
// in property set accessor
// in property get accessor
// Property value: 30
若要列出对象属性,请将以下代码添加到此示例中。
var names = Object.getOwnPropertyNames(obj);
for (var i = 0; i & names. i++) {
var prop = names[i];
document.write(prop + ': ' + obj[prop]);
document.write(newLine);
// Output:
// in property get accessor
// newAccessorProperty: 30
若要修改对象的访问器属性,请将以下代码添加前面所示的代码。&&&descriptor&参数只包含&get&访问器定义。&&其他属性特性保持不变。&&
// Modify the get accessor.
Object.defineProperty(obj, &newAccessorProperty&, {
get: function () { return this. }
// List the property attributes by using a descriptor.
// Get the descriptor with Object.getOwnPropertyDescriptor.
var descriptor = Object.getOwnPropertyDescriptor(obj, &newAccessorProperty&);
for (var prop in descriptor) {
document.write(prop + ': ' + descriptor[prop]);
document.write(newLine);
// Output:
// get: function () { return this. }
// set: function (x) { document.write(&in property set accessor& + newLine); this.newaccpropvalue = }
// configurable: true
// enumerable: true
下面的示例演示如何通过使用&Object.getOwnPropertyDescriptor&函数来获取和修改属性的属性描述符,从而自定义内置 DOM 属性。&&对于此示例中,必须通过使用 ID 为“div”的 DIV 元素。&&
// Get the querySelector property descriptor.
var descriptor = Object.getOwnPropertyDescriptor(Element.prototype, &querySelector&);
// Make the property read-only.
descriptor.value = &query&;
descriptor.writable = false;
// Apply the changes to the Element prototype.
Object.defineProperty(Element.prototype, &querySelector&, descriptor);
// Get a DOM element from the HTML body.
var elem = document.getElementById(&div&);
// Attempt to change the value. This causes the revised value attribute to be called.
elem.querySelector = &anotherQuery&;
document.write(elem.querySelector);
// Output:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:175642次
积分:1871
积分:1871
排名:千里之外
原创:13篇
转载:187篇
评论:13条
(1)(3)(1)(4)(5)(3)(15)(6)(6)(13)(1)(4)(11)(5)(9)(7)(11)(7)(8)(1)(14)(15)(6)(1)(15)(9)(10)(5)(2)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'一、基本定义
TheObject.defineProperty()方法定义了一个新的属性直接在一个对象,或修改现有的属性的对象,并返回该对象。
&span style=&font-size:14&&Object.defineProperty(obj,prop,descriptor)&/span&&span style=&font-family:Microsoft YaH&&
obj:定义的对象属性。
prop:属性的名称定义或修改。
descriptor:该属性被定义或修改描述符。
可使用&Object.defineProperty&函数来执行以下操作:
向对象添加新属性。&&当对象不具有指定的属性名称时,发生此操作。&&
修改现有属性的特性。&&当对象已具有指定的属性名称时,发成此操作。&&
描述符对象中会提供属性定义,用于描述数据属性或访问器属性的特性。&&描述符对象是&Object.defineProperty&函数的参数。&&
若要向对象添加多个属性或修改多个现有属性,可使用&。
三、添加数据属性
在以下示例中,Object.defineProperty&函数向用户定义的对象添加数据属性。&&若改为向现有的
DOM 对象添加属性,则取消对var = window.document&行的注释。&&
var newLine = &&br /&&;
var obj = {};
Object.defineProperty(obj, &newDataProperty&, {
value: 101,
//属性默认值
writable: true,
//是否可以对属性重新赋值
enumerable: true,
//是否可以枚举,是否可以通过for...in遍历到,是否可以通过Obejct.key()方法获取属性名称
configurable: true
//是否可以删除属性,是否可以修改属性的writable、enumerable、configurable属性&pre name=&code& class=&html&&
set:undefined,
//属性被赋值时方法调用
get:undefined
//属性被读取时方法调用});obj.newDataProperty = 102;document.write(&Property value: & + obj.newDataProperty + newLine);// Output:// Property value: 102
若要列出对象属性,请将以下代码添加到此示例中。
var names = Object.getOwnPropertyNames(obj);
for (var i = 0; i & names. i++) {
var prop = names[i];
document.write(prop + ': ' + obj[prop]);
document.write(newLine);
// Output:
newDataProperty: 102
不过还是有一点需要额外注意一下,&Object.defineProperty()&方法设置属性时,属性不能同时声明访问器属性set
和 get和 writable 或者 value 属性。&
意思就是,某个属性设置了writable或者 value 属性,那么这个属性就不能声明 get 和 set
了,反之亦然。&
因为Object.defineProperty()在声明一个属性时,不允许同一个属性出现两种以上存取访问控制。
四、修改数据属性
若要修改对象的属性特性,请将以下代码添加到前面所示的 addDataProperty 函数。 & descriptor 参数只包含 writable 特性。 &其他数据属性特性保持不变。 &
Object.defineProperty(obj, &newDataProperty&, { writable: false });
var descriptor = Object.getOwnPropertyDescriptor(obj, &newDataProperty&);
for (var prop in descriptor) {
document.write(prop + ': ' + descriptor[prop]);
document.write(newLine);
// writable: false
// value: 102
// configurable: true
// enumerable: true
var newLine = &&br /&&;
var obj = {};
Object.defineProperty(obj, &newAccessorProperty&, {
set: function (x) {
document.write(&in property set accessor& + newLine);
this.newaccpropvalue =
get: function () {
document.write(&in property get accessor& + newLine);
return this.
enumerable: true,
configurable: true
obj.newAccessorProperty = 30;
document.write(&Property value: & + obj.newAccessorProperty + newLine);
// Output:
// in property set accessor
// in property get accessor
// Property value: 30
Internet Explorer 9 标准模式、Internet Explorer 10 标准模式以及 Windows 8.x 应用商店 应用支持所有功能。
Internet Explorer 8 标准模式 支持 DOM 对象,但不支持用户定义的对象。&&可以指定&enumerable&和&configurable&特性,但不使用它们。&&
七、关于set 和 get补充
set pro(v){
console.log(&value is &+v);
get pro(){
return 'pro';
// value is 3
个人理解:set是存储对象属性触发的方法,get是读取对象属性触发的方法。注意在defineProperty方法里写法不同。
本文已收录于以下专栏:
相关文章推荐
使用Object.defineProperty重新定义属性时需要注意的一点,具体来说:当一个对象已存在某属性,重新定义该属性(如果允许)时,若未指定属性描述器的enumerable或configura...
这个方法可牛比了。这么说吧,vue.js是通过它实现双向绑定的。俗称属性拦截器。而且专门用来监控对象属性变化的Object.observe方法也...
//用面向字面量的方式创建一个book对象
var book={};
//调用Object.defineProperties(对象名,要添加的属性)方法,为对象一次定义多个...
这个方法了不起啊。。vue.js和avalon.js 都是通过它实现双向绑定的。。而且Object.obse...
仅为以后自己方便查看。
/library/dd548687(v=vs.94).aspx
将属性添加到对象,或修改现有属性的特性。
js/javascript代码注释规范与示例
 注释在代码编写过程中的重要性,写代码超过半年的就能深深的体会到。没有注释的代码都不是好代码。为了别人学习,同时为了自己以后...
gSoap错误消息有客户端错误消息和服务器端返回的错误消息两类,客户端错误消息是指在发送数据到服务器之前产生的错误(一般为ANSI编码),比如连接主机失败等.假设服务器返回的字符串采用UTF-8编码(...
//定义一个模块&app/basic&,它依赖另一个模块&util&
如果在模块定义体中需要用到依赖模块,则模块定义体应该是固定的方式
即,使用闭包的方式进行模块实体定义,从而可以对依赖模块进行...
jQuery实现倒计时效果-杨秀徐
本实例效果:剩余368天22小时39分57秒结束
代码简单易懂,适用各种倒计时;
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)javascript(9)
首先我们来说一下何为前端的&双向数据绑定&。简单的来说,就是框架的控制器层(这里的控制器层是一个泛指,可以理解为控制view行为和联系model层的中间件)和UI展示层(view层)建立一个双向的数据通道。当这两层中的任何一方发生变化时,另一层将会立即(或者看起来是&立即&)自动作出相应的变化。
一般来说要实现这种双向数据绑定关系(控制器层与展示层的关联过程),在前端目前会有三种方式,
脏检查观察机制封装属性访问器
我们说Angularjs(这里特指AngularJS 1.x.x版本,不代表AngularJS 2.x.x版本)双向数据绑定的技术实现是脏检查,大致的原理就是,Angularjs内部会维护一个序列,将所有需要监控的属性放在这个序列中,当发生某些特定事件时(注意,这里并不是定时的而是由某些特殊事件触发的),Angularjs会调用&$digest&方法,这个方法内部做的逻辑就是遍历所有的watcher,对被监控的属性做对比,对比其在方法调用前后属性值有没有发生变化,如果发生变化,则调用对应的handler。网上有许多剖析Angularjs双向数据绑定实现原理的文章,比如&,再比如&,等等。
这种方式的缺点很明显,遍历轮训watcher是非常消耗性能的,特别是当单页的监控数量达到一个数量级的时候。
博主之前有一篇转载翻译的文章,&,说的就是使用ECMAScript7中的&方法对对象(或者其属性)进行监控观察,一旦其发生变化时,将会执行相应的handler。
这是目前监控属性数据变更最完美的一种方法,语言(浏览器)原生支持,没有什么比这个更好了。唯一的遗憾就是目前支持广度还不行,有待全面推广。
封装属性访问器
在php中有&这样一种概念,比如php中的&__get()&和&__set()&方法。在javascript中也有类似的概念,不过不叫魔术方法,而是叫做访问器。我们来看个示例代码,
var data = {
name: &erik&,
getName: function() {
return this.name;
setName: function(name) {
this.name = name;
从上面的代码中我们可以管中窥豹,比如&data&中的&getName()&和&setName()&方法,我们可以简单的将其看成&data.name&的访问器(或者叫做&存取器&)。
其实,针对上述的代码,更加严格一点的话,不允许直接访问&data.name&属性,所有对&data.name&的读写都必须通过&data.getName()&和&data.setName()&方法。所以,想象一下,一旦某个属性不允许对其进行直接读写,而必须是通过访问器进行读写时,那么我当然通过重写属性的访问器方法来做一些额外的情,比如属性值变更监控。使用属性访问器来做数据双向绑定的原理就是在此。
这种方法当然也有弊端,最突出的就是每添加一个属性监控,都必须为这个属性添加对应访问器方法,否则这个属性的变更就无法捕获。
Object.defineProperty&方法
国产mvvm框架avalon.js实现数据双向绑定的原理就是属性访问器。不过它当然不会像上述示例代码一样原始。它使用了ECMAScript5.1(ECMA-262)中定义的标准属性&方法。针对国内行情,部分还不支持&Object.defineProperty&低级浏览器采用VBScript作了完美兼容,不像其他的mvvm框架已经逐渐放弃对低端浏览器的支持。
我们先来MDN上对&Object.defineProperty&方法的定义,
The&Object.defineProperty()&method defines a new property directly on an object, or modifies an existing property on an object, and returns the object.
意义很明确,&Object.defineProperty&方法提供了一种直接的方式来定义对象属性或者修改已有对象属性。其方法原型如下,
Object.defineProperty(obj, prop, descriptor)
obj&,待修改的对象prop&,带修改的属性名称descriptor&,待修改属性的相关描述
descriptor&要求传入一个对象,其默认值如下,
* @{param} descriptor
configurable: false,
enumerable: false,
writable: false,
value: null,
set: undefined,
get: undefined
configurable&,属性是否可配置。可配置的含义包括:是否可以删除属性(&delete&),是否可以修改属性的&writable&、&enumerable&、&configurable&属性。enumerable&,属性是否可枚举。可枚举的含义包括:是否可以通过&for...in&遍历到,是否可以通过&Object.keys()&方法获取属性名称。writable&,属性是否可重写。可重写的含义包括:是否可以对属性进行重新赋值。value&,属性的默认值。&set&,属性的重写器(暂且这么叫)。一旦属性被重新赋值,此方法被自动调用。&get&,属性的读取器(暂且这么叫)。一旦属性被访问读取,此方法被自动调用。
下面来一段示例代码,
var o = {};
Object.defineProperty(o, 'name', {
value: 'erik'
console.log(Object.getOwnPropertyDescriptor(o, 'name')); // Object {value: &erik&, writable: false, enumerable: false, configurable: false}
Object.defineProperty(o, 'age', {
value: 26,
configurable: true,
writable: true
console.log(o.age); // 26
o.age = 18;
console.log(o.age); // 18. 因为age属性是可重写的
console.log(Object.keys(o)); // []. name和age属性都不是可枚举的
Object.defineProperty(o, 'sex', {
value: 'male',
writable: false
o.sex = 'female'; // 这里的赋值其实是不起作用的
console.log(o.sex); // 'male';
delete o.sex; // false, 属性删除的动作也是无效的
经过上述的示例,正常情况下&Object.definePropert()&的使用都是比较简单的。
不过还是有一点需要额外注意一下,&Object.defineProperty()&方法设置属性时,属性不能同时声明访问器属性(&set&和&get&)和&writable&或者&value&属性。&意思就是,某个属性设置了&writable或者&value&属性,那么这个属性就不能声明&get&和&set&了,反之亦然。
因为&Object.defineProperty()&在声明一个属性时,不允许同一个属性出现两种以上存取访问控制。
示例代码,
var o = {},
myName = 'erik';
Object.defineProperty(o, 'name', {
value: myName,
set: function(name) {
myName = name;
get: function() {
return myName;
上面的代码看起来貌似是没有什么问题,但是真正执行时会报错,报错如下,
TypeError: Invalid property.
A property cannot both have accessors and be writable or have a value, #&Object&
因为这里的&name&属性同时声明了&value&特性和&set&及&get&特性,这两者提供了两种对&name&属性的读写控制。这里如果不声明&value&特性,而是声明&writable&特性,结果也是一样的,同样会报错。
/entry/138340
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:43522次
排名:千里之外
原创:13篇
转载:44篇
(1)(1)(1)(4)(5)(4)(5)(2)(4)(6)(1)(9)(2)(3)(1)(2)(4)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'使用Object.defineProperty重新定义属性时需要注意的一点,具体说来:
当一个对象已存在某属性,重新定义该属性(如果允许)时,若未指定属性描述器的enumerable或configurable,则其默认值为原有属性描述器的对应的enumerable或configurable值。
再次定义一个对象的属性时,新属性描述器中未指定的enumerable或configurable其默认值将由原属性描述器提供,而不再是false。
看来长话短说不了,依旧这么长,那就不废话了,举例说明:
设有一对象foo
firstName: "Foo",
lastName: "Bar",
get fullName(){
return this.firstName+" "+this.lastN
console.log(foo.fullName);
现需对foo进行升级
1. 支持middleName;
2. 在JSON.stringify(foo)时属性fullName不被序列化;
Object.defineProperty(foo,"fullName",{
configurable:true,
get: function(){
var fullName=this.firstN
if(this.middleName)
fullName+=" "+this.middleN
fullName+=" "+this.lastN
return fullN
foo.middleName="Tim";
console.log(foo.fullName);
console.log(JSON.stringify(foo));
升级后存在bug
从#test3的输出结果可以看出:JSON.stringify(foo)时属性fullName仍被序列化了。
于是检查fullName的属性描述器
console.log(Object.getOwnPropertyDescriptor(foo,"fullName"));
发现enumerable值仍然是true,未指定应该是false才对呀。
是不是浏览器有bug?
换了个浏览器,亦存在同样问题。
浏览器没有错,机制如此而已
只好显式指定enumerable,打补丁修复现有问题。
(function(){
var descriptor=Object.getOwnPropertyDescriptor(foo,"fullName");
descriptor.enumerable=false;
Object.defineProperty(foo,"fullName",descriptor);
console.log(JSON.stringify(foo));
总算搞定了,坑爹呀!
所以说,使用Object.defineProperty重新定义属性时需要注意
本文已收录于以下专栏:
相关文章推荐
这个方法可牛比了。这么说吧,vue.js是通过它实现双向绑定的。俗称属性拦截器。而且专门用来监控对象属性变化的Object.observe方法也...
一、基本定义
TheObject.defineProperty()方法定义了一个新的属性直接在一个对象,或修改现有的属性的对象,并返回该对象。
Object.defineProper...
//用面向字面量的方式创建一个book对象
var book={};
//调用Object.defineProperties(对象名,要添加的属性)方法,为对象一次定义多个...
仅为以后自己方便查看。
参考链接1: javascript学习(九)对象属性的特性参考链接2:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference...
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,
并返回这个对象。
Object.defineProperty(ob...
Object.defineProperty() 方法直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。语法Object.defineProperty(obj, prop, ...
这个方法了不起啊。。vue.js是通过它实现双向绑定的。。而且Object.observe也被草案发起人撤回了。。所以defineProperty更有必要了解一下了。
几行代码看他怎么用
box-sizing属性作用:通过box-sizing属性,重新定义盒子模型with、height属性所包含的范围。box-sizing属性值:content-box:border和padding不计...
解决我的开源代码里面的前一篇后一篇的跳页问题,由于时间关系我不发图了,存储过程没有更改,我改进了一下报错功能,用来重新定义属性,大家努力吧!我这个项目这个月就上线了!加油喽!呵呵!
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)3592人阅读
JavaScript(62)
这个方法了不起啊。。vue.js和avalon.js 都是通过它实现双向绑定的。。而且Object.observe也被草案发起人撤回了。。所以defineProperty更有必要了解一下了几行代码看他怎么用
Object.defineProperty(a,&b&,{
console.log(a.b);
很简单,,它接受三个参数,而且都是必填的。。
第一个参数:目标对象
第二个参数:需要定义的属性或方法的名字。
第三个参数:目标属性所拥有的特性。(descriptor)
前两个参数不多说了,一看代码就懂,主要看第三个参数descriptor,看看有哪些取值
descriptor
他又以下取值,我们简单认识一下,后面例子,挨个介绍,
value:属性的值(不用多说了)
writable:如果为false,属性的值就不能被重写,只能为只读了
configurable:总开关,一旦为false,就不能再设置他的(value,writable,configurable)
enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来。
get:一会细说
set:一会细说
descriptor默认值
我们再看看第一个例子
Object.defineProperty(a,&b&,{
console.log(a.b);
我们只设置了 value,别的并没有设置,但是 第一次的时候可以简单的理解为(暂时这样理解)它会默认帮我们把writable,configurable,enumerable。都设上值,而且值还都是false。。也就是说,上面代码和下面是等价的的(
仅限于第一次设置的时候)
Object.defineProperty(a,&b&,{
value:123,
writable:false,
enumerable:false,
configurable:false
console.log(a.b);
以上非常重要哦。。并且以上理解对set 和 get 不起作用哦
configurable
总开关,第一次设置 false 之后,,第二次什么设置也不行了,比如说
Object.defineProperty(a,&b&,{
configurable:false
Object.defineProperty(a,&b&,{
configurable:true
就会报错了。。注意上面讲的默认值。。。如果第一次不设置它会怎样。。会帮你设置为false。。所以。。第二次。再设置他会怎样?。。对喽,,会报错
如果设置为fasle,就变成只读了。。
var a = {};
Object.defineProperty(o, &b&, {
value : 123,
writable : false });
console.log(a.b);
console.log(o.a);
enumerable
属性特性 enumerable 定义了对象的属性是否可以在 for...in 循环和 Object.keys() 中被枚举。
Object.defineProperty(a,&b&,{
value:3445,
enumerable:true
console.log(Object.keys(a));
Object.defineProperty(a,&b&,{
value:3445,
enumerable:false
console.log(Object.keys(a));
for...in 类似,,不赘述了
set 和 get
在 descriptor 中不能 同时设置访问器 (get 和 set) 和 wriable 或 value,否则会错,就是说想用(get 和 set),就不能用(wriable 或 value中的任何一个)
set 和 get ,他俩干啥用的的,
Object.defineProperty(a,&b&,{
set:function(newValue){
console.log(&你要赋值给我,我的新值是&+newValue)
get:function(){
console.log(&你取我的值&)
console.log(a.b)
简单来说,, 这个 “b” 赋值 或者 取值的时候会分别触发 set 和 get 对应的函数
这就是实现 observe的关键啊。。下一篇,,我会分析vue的observe的实现源码,聊聊自己如何一步一步实现$watch
a.$watch(&b.c&,()=&console.log(&哈哈哈&))
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:70535次
积分:1553
积分:1553
排名:千里之外
原创:103篇
(1)(22)(6)(26)(58)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 defineproperty get 的文章

 

随机推荐