Object.getOwnPropertyDescriptors()】的更多相关文章

Object.getOwnPropertyDescriptors() 前面说过,Object.getOwnPropertyDescriptor方法会返回某个对象属性的描述对象(descriptor).ES2017 引入了Object.getOwnPropertyDescriptors方法,返回指定对象所有自身属性(非继承属性)的描述对象. const obj = { foo: 123, get bar() { return 'abc' } }; Object.getOwnPropertyDesc…
转载烦请注明原文链接: https://github.com/Xing-Chuan/blog/blob/master/JavaScript/JavaScript%E4%B9%8BObject%E6%8B%86%E8%A7%A3.md --- 最近把研究 Object 的体会总结了一下, 有 Object 相关联的属性.方法和 ES6 后新 Api . 属性类型 JavaScript 中有两种数据类型: 数据属性和访问器属性 数据属性 数据属性有以下几个描述行为的属性: Configurable…
Object.assign(target,source1,source2,...) 该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性. Object.assign方法实行的是浅拷贝,而不是深拷贝.也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用.同名属性会替换. Object.assign只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制. Object.ass…
ECMAS-262第5版在定义只有内部采用的特性时,提供了描述了属性特征的几种属性.ECMAScript对象中目前存在的属性描述符主要有两种,数据描述符(数据属性)和存取描述符(访问器属性),数据描述符是一个拥有可写或不可写值的属性.存取描述符是由一对 getter-setter 函数功能来描述的属性. Object的defineProperty和defineProperties这两个方法在js中的重要性十分重要,主要功能就是用来定义或修改这些内部属性,与之相对应的getOwnPropertyD…
1.实例化Object对象 实例化Object对象的方式有两种:使用Object构造器和使用对象的字面量.例如: var person1 = { name: '李四' }; var person2 = new Object(); person2.name = '王二'; 2.为实列添加属性 我们可以随时随地为对象添加属性,也可以随时修改属性的值. var person1 = { name: '小明' }; var person2 = new Object(); person2.name = '小…
Object 对象的相关方法 Object.getPrototypeOf() 返回参数对象的原型. 这是获取某对象的原型对象的标准方法. var F = function () {}; var f = new F(); Object.getPrototypeOf(f) === F.prototype // true 几种特殊对象的原型 // 空对象的原型是 Object.prototype Object.getPrototypeOf({}) === Object.prototype // tru…
1.Object.assign(target,...source) 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 2.Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. 子类.prototype = Object.create(父类.prototype); 3.Object.defineProperties(obj,props) 方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象. 4.Objec…
功能分类                       1. 创建对象 把各对数自身拥有的可枚举属性复制到第一个对象并返回:obj = Object.assign(o1, o2, o3),o1=obj assign会自动把非对象参数转换为对象,如数组会转换成序号为key,相应值为value的对象 继承并扩展一个原型对象:obj = Object.create(protoObj, {属性对象}), obj.__proto = protoObj 2. 属性相关 添加/修改一个(多个):Object.d…
Ref: 对象的扩展 Outline: 属性的简洁表示法 属性名表达式 方法的 name 属性 Object.is() Object.assign() 属性的可枚举性和遍历 Object.getOwnPropertyDescriptors() __proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf() super 关键字 Object.keys(),Object.values(),Object.entries() 对象的扩展运算符 简洁…
在介绍js中Object.defineProperty()和defineProperties()之前,我们了解下js中对象两种属性的类型:数据属性和访问器属性. 数据属性 数据属性包含一个数据的位置,在这个位置可以读取和写入.其有4个描述其行为的特性 [[Configurable]] 表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访问器属性.通过对象字面量创建的属性,默认为true [[Enumerable]] 表示能否通过for-in循环访问属性.(或通…
1.Object.freeze() 阻止修改现有属性的特性和值,并阻止添加新属性两种用法:Object.freeze( { } ) 和 Object.freeze( object ) <script type="text/javascript"> let a = {}; a.sex = '男'; console.log(a.sex, 111);//男 111 Object.freeze(a); a.sex = '女'; console.log(a.sex, 222);//男…
在a.html页面中: window.obj = {name: "jinbang"} 在a.html页面中打开新窗口b.html页面: console.log(window.opener.obj instanceof Object); //输出false 发现b.html的window.opener.obj instanceof Object会输出false,这不是应该输出true吗. 分析原因: 这和引用数据类型的this指向的堆内存对象有关,因为两个是不一样的堆内存对象里面. wi…
1.Object.create() Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. 用法:Object.create( proto, [propertiesObject] ) 参数 proto:新创建对象的原型对象 propertiesObject可选.如果没有指定为 undefined,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称.这些属性对应Object.def…
一.Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举属性的字符串数组 处理对象,返回可枚举的属性数组 let person = {name:"张三",age:25,address:"深圳",getName:function(){}}; console.log(Object.keys(person)); 2. 处理数组,返回索引值数组 let arr = [1,2,3,4,5,6]; console.log(Ob…
详情参考 1.对象的表示方法 js原生提供Object构造函数.js中所有的对象都是Object的实例. 定义一个对象最简单的就是var obj = {}; ES6属性和方法允许简写.对象的super属性只能用在简写的方法中,其他的地方都会报错. let a = 5; let obj = { a, // 相当于a: a b() { return 'lyra' } };  属性可以使用存取器表示.存取器的使用场合一般是: 属性的值依赖对象内部数据. var obj = { count: 5, ge…
javascript有5种基础的内建对象(Fundamental Objects),Object.Function.Error.Symbol.Boolean,而Object/Function尤为特殊,是定义其他内建对象或者普通对象和方法的基础. 详细的了解Object和Function对象有助于更好的理解javascript的一些工作原理. 和其他引用类型一样,Object/Function既是对象,有自己的方法和属性,也是函数,可以作为构造函数. 本文主要讨论以下几个问题: Fucntion.…
https://juejin.im/post/5cfd9d30f265da1b94213d28#heading-14 https://juejin.im/post/5d124a12f265da1b9163a28d https://juejin.im/post/5b44a485e51d4519945fb6b7#heading-19 //1.原型链继承 与Object.create()一样 // 特点(1)通过原型来实现继承时,原型会变成另一个类型的实例:子实例会混入父实例的方式与属性 // 原先的…
Object.assign() 方法用于将所有可枚举属性(对象属性)的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法 Object.assign(target, ...sources) 参数 target 目标对象. sources 源对象. 返回值 目标对象. const target = { a: 1, b: 2 }; const source = { b: 4, c: 5 }; const returnedTarget = Object.assign(target, sour…
目录 Object Object属性 1.Object.prototype 2.Object.name Object方法 1.Object.assign() 2.Object.create() 3.Object.seal() 4.Object.freeze() 5.Object.is() 6.Object.preventExtensions() 7.Object.getOwnPropertyNames() 8.obj.hasOwnProperty() 9.Object.getOwnPropert…
Object.getPrototypeOf() Object.getPrototypeOf方法返回参数对象的原型.这是获取原型对象的标准方法. var F = function () {}; var f = new F(); Object.getPrototypeOf(f) === F.prototype // true 几种特殊对象的原型. 空对象的原型是 Object.prototype Object.prototype 的原型是 null 函数的原型是 Function.prototype…
const data = { portLand: '78/50', Dublin: '88/52', Lima: '58/40' } Object.defineProperty(data, 'Lima', { enumerable: false, writable: false }) console.log(Object.keys(data)) console.log(Object.getOwnPropertyDescriptors(data)) console.log(Object.getOw…
前言 JavaScript 中允许使用一些内部特性来描述属性的特征,本文来总结一下对象内部属性与 Object.defineProperty() 的相关知识. 正文 1.属性类型 js中使用某些内部属性来描述属性的特征,比如描述属性是否可以枚举,是否可以修改等特征,我们无法访直接问属性的这些特征,但是可以通过[[]]的方式来将某个特性标识为内部属性.这些内部属性分为数据属性和访问器属性. (1)数据属性 数据属性包含一个保存数据值的位置.值会从这个位置读取,也会写入到这个位置.数据属性有 4个特…
Object.create(proto, [propertiesObject])//创建对象,使用参数一来作为新创建对象的__proto__属性,返回值为在指定原型对象上添加自身属性后的对象 //参数proto:必须,新对象的原型对象,可以是null/Object/函数的prototype属性,创建空对象时需传null //参数[propertiesObject]:可选,添加到自身的可枚举属性,不是添加在原型链上的 Object.create()与new Object()的区别: new Obj…
ES6 let和const let命令 只在代码块作用域内有效 不存在变量提升(不能在申明之前赋值) 暂时性死区(在区域内不受外部变量影响) 不允许重复申明(在相同代码块区域内) 块级作用域 let为es6新增了块级作用域 {let a = ...;} 函数可以在块级作用域申明,不受外界影响 if(...) { function(){}} 注:块级作用域处大括号不能省略. const命令 立即初始化,不可改变. 类似let于的特性. 对于对象,const存储只保持地址不变,对象内属性可变,但是不…
ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把ECMAScript的对象想象成散列表,无非就是一组名值对,其中值可以是数据或函数.(高程三 P139) [译]JavaScript中对象的属性   <高程三 P139 属性类型> JavaScript笔记--数据属性和访问器属性 JavaScript中有两种不同类型的属性:命名数据属性(named…
title: <ECMAScript标准入门>第二版 date: 2017-04-10 tags: JavaScript categories: Reading-note 2015年6月,ECMAScript 6正式通过,成为国际标准.尽管在目前的工作中还没有使用ES6,但是每项新技术出来总是忍不住想尝尝鲜,想知道ES6能为前端开发带来哪些变化?对自己的工作有哪些方面可以提升.刚好看到阮一峰的<ES6标准入门>,便顺着这本书尝试着ES6的各种新特性. ES6的各种新特性的兼容性查询…
一. 字符串的扩展 为字符串添加了Iterator,可以被for...of遍历 includes.startsWith.endsWith都会返回布尔值,且支持第二个参数(开始搜索的位置),endsWith针对前n个字符,其他两个都是从第n个到结束 repeat返回一个新字符串,参数为重复的次数(小数会向下取整,负数或Infnity会报错,0到-1等同于0,字符串会转为数字) padStart.padEnd在头部或尾部补全,第一个参数是字符串最小长度,第二个参数是用来补齐的字符串 模板字符串`${…
撰文为何 身为一个前端开发者,ECMAScript(以下简称ES)早已广泛应用在我们的工作当中.了解ECMA机构流程的人应该知道,标准委员会会在每年的6月份正式发布一次规范的修订,而这次的发布也将作为当年的正式版本.以后的改动,都会基于上一版本进行修改.所以,我们这次就基于ES6的版本对ES7.ES8版本的新增以及修改内容,做一次简要的总结,方便我们快速开发. ES7新特性 ES7在ES6的基础上添加了三项内容:求幂运算符(**).Array.prototype.includes()方法.函数作…
前言 这是读书笔记第二篇,看完之后突然发现自己对js的内置的一些东西还是了解的不够全面,很多方法见都没见过,啥用都不知道,这是非常不可取的.码农好歹也得眼熟啊,晓都不晓得后面的学习还怎么进行下去...赶紧做笔记吧-文中如有错误不当不出,欢迎指出- 创建一个对象 var obj = {} //字面量创建 var obj = new Object() //构造函数创建 2种创建方式是完全一样的,一般书写我们都采用字面量. 复制对象 首先明确一点,借用红宝书一句话,对于对于js中的赋值传参等操作,传递…
1,函数绑定运算符,用来取代call,apply,bind调用,写法:并排的双冒号(::),左边是对象,右边是函数 foo :: bar; // 等同于bar.bind(foo); 双冒号返回的还是原对象,所以可以用链式写法. 2,允许在函数定义或者调用时最后一个参数添加逗号 function fn(a,b,) {} 3,Object.values(obj):返回一个数组,成员是参数对象obj的自身(不含继承)可遍历的属性的键值,不是键名. 4,Object.entries(obj):返回一个数…