21000+行原生J S的学习之路(第三篇)

11.

{
    ()()()()()()[]()()()()T(T)TT(T[])TT (T)TT(T)TT(T)T()()()()[]}

今天我们来看下对象的constructor属性。

11.1 new()对于我们来说是一个很常用的方法比如我们实例化一个Object的时候,它里面的参数可以是任何类型的,既然是实例化一个对象那么它返回的肯定还会是一个对象。

11.2 readonly property当然就不用多说了,Object property肯定是只读的。来看看getPropertyOf(),

顾名思义这是一个获取对象原型的一个方法。如:

function Foo(){}

var foo = new Foo();

console.log(Foo.prototype === Object.getPrototypeOf(foo));  //true

11.3 getOwnPropertyDescriptor()用来获取指定对象的自身属性描述符。自身属性描述符是指直接在对象上定义(而非从对象的原型继承)的描述符。直接上代码:

var person ={ name:"Hai" };

var personName = Object.getOwnPropertyDescriptor(person,"name"); //获取name属性身上的特性

console.log(personName);  //输出为{value: "Hai", writable: true, enumerable: true, configurable: true}

var personToString = Object.getOwnPropertyDescriptor(person,"toString"); //此处意图获取person对象自身的toString方法

console.log(personToString); //因为toString()是Object的方法,是继承来的,所以返回undefined

Object.defineProperty(person,"name",{writable:false}); //修改name属性的可写特性为false,则不可以对name重新赋值

personName = Object.getOwnPropertyDescriptor(person,"name"); //再次获取name属性的特性

console.log(personName); //{value: "Hai", writable: false, enumerable: true, configurable: true}

person.name = "dingding"; //强行修改name

console.log(person.name); //这里仍然输出 “Hai”

11.4  getOwnPropertyNames()返回对象自己的属性的名称。一个对象的自己的属性是指直接对该对象定义的属性,而不是从该对象的原型继承的属性。对象的属性包括字段(对象)和函数。getOwnPropertyNames 方法同时返回可枚举的和不可枚举的属性和方法的名称。若要仅返回可枚举的属性和方法的名称,可使用 Object.keys 函数 (JavaScript)。如:

function Pasta(grain, width, shape) {

// Define properties.

this.grain = grain;

this.width = width;

this.shape = shape;

this.toString = function () {

return (this.grain + ", " + this.width + ", " + this.shape);

}

}

// Create an object.

var spaghetti = new Pasta("wheat", 0.2, "circle");

// Get the own property names.

var arr = Object.getOwnPropertyNames(spaghetti);

console.log(arr);

11.5 create()用于创建一个对象,参数可以使一个指定的对象原型也可以是null。返回类型为any

11.6 defineProperty()定义了一个新的属性直接在一个对象,或修改现有的属性的对象,并返回该对象。

如11.3中:Object.defineProperty(person,"name",{writable:false}); //修改name属性的可写特性为false。

11.7 defineProperties(object, descriptors)其中object为被操作的对象,descriptors包含一个或多个描述符对象的 JavaScript 对象。 每个描述符对象描述一个数据属性或访问器属性.

Object.preventExtensions():防止对象扩展。

Object.isExtensible():判断对象是否可扩展。

Object.seal():禁止对象配置。

Object.isSealed():判断一个对象是否可配置。

Object.freeze():冻结一个对象。

Object.isFrozen():判断一个对象是否被冻结。

11.8 Object.keys()和Object.getOwnPropertyNames方法很相似,一般用来遍历对象的属性。它们的参数都是一个对象,都返回一个数组,该数组的成员都是对象自身的(而不是继承的)所有属性名。它们的区别在于,Object.keys方法只返回可枚举的属性,Object.getOwnPropertyNames方法还返回不可枚举的属性名。如:

var a = ["Hello", "World"];

Object.keys(a)

// ["0", "1"]

Object.getOwnPropertyNames(a)

// ["0", "1", "length"]

----------------------------------------------------------------------------------------------------------

OVER

时间: 2024-10-23 15:08:51

21000+行原生J S的学习之路(第三篇)的相关文章

21000+行原生J S的学习之路(第一篇)

学习JS已经有一年多了(小白),看了很多书,也写了不少代码,但是总感觉功力还是不够(哈哈),前段时间偶然接触到原生JS代码,边对此产生了兴趣,学习原生JS对于我们深入了解js有很好的帮助比如函数的参数类型.返回值类型等.下来先介绍一下原生JS的语法结构,来帮助大家更好的学习和阅读原生JS: declare function eval(x: string): any; 上面这个就是我们常见的eval函数在原生JS中的写法,括号中X为函数的参数,':'后面为参数的类型,最外层':'后面为调用函数返回

21000+行原生J S的学习之路(第二篇)

10.  object interface Object {     /** The initial value of Object.prototype.constructor is the standard built-in Object constructor. */     constructor: Function;     /** Returns a string representation of an object. */     toString(): string;     /

Azure云平台学习之路(三)——Cloud Services

1.什么是云服务? 能够部署高度可用的且可无限缩放的应用程序和API.简而言之,就是你写的CMD程序按照一定的框架进行少量修改就能运行在Azure云平台上. 2.Azure云服务有什么特点? (1)专注应用程序而不是硬件,PaaS的一种. (2)支持多种框架和语言. (3)集成了运行状况监视和负载平衡. (4)自动缩放优化成本和性能 3.建立云服务之前,我们需要建立一个云存储,来记录我们的程序的日志信息(当然,这不是必须的) (1)选择左边导航栏的"存储".主面板上显示的是所有已有的存

Python 学习之路(三)

Python 学习之路(三) 以下所用的是Python 3.6 一.集合部分 集合是一个无序的,不重复的数据集合,主要用来去重,以及关系测试:交集,差集,并集等 1.1 关系操作 1.1.1 列表去重 可以给列表去重,例如: 1 set_demo = [1,2,3,4,5,3,2,1] # 列表 2 set_demo = set(set_demo) # 转换成集合,来去重 3 print(set_demo) 1.1.2 取交集 intersection()方法 可以获得两个集合的交集部分,例如:

Android的学习之路(三)项目的启动过程和安装过程详解

应用的安装和启动过程: 安装:第一步:java的编译器会把这个.java文件编译成.class文件 第二部:Android的SDK提供了一个dx工具,这个工具把.class文件转义成.dex文件 第三部:打包操作,把.dex文件和资源文件进行打包,打包成一个压缩文件,然后进行签名.最后就打包成为了.apk文件 第四部:调用adb指令:adb install c:/x.apk安装到模拟器 具体过程:.JAVA---->.class--.dx-->.dex--->打包签名--->.ap

我的DOJO学习之路(三)-几个DEMO

基于DOJO组件式开发写了几个DEMO练练手,仅供参考. <script type="text/javascript" language="javascript" charset="utf-8"> require(["dojo/ready", "dojo/on", "dojo/request/xhr", "dojo/parser", "dijit

Objective-C学习之旅 第三篇

Objective-C学习之旅 第三篇 Objective-C 类声明,定义,实例,初始化 类声明 //类声明的编译处理指令以@interface开始,以@end结尾,在这之间代码便是类变量的定义和方法的声明. //类的声明和定义比其他语言复杂,这会让刚开始学习Objective-C的人非常困惑 //准确的说,其他语言如Java只需定义类而不用声明,而Objective-C需要先声明再定义. @interface 类名 : 父类名 { 声明成员变量 ... } 声明方法 @end 实例: @in

跟我学习SpringCloud 教程第三篇:注册中心集群篇-b2b2c小程序电子商务

集群环境搭建?了解springcloud架构可以加求求:三五三六二四七二五九第一步:我们新建两个注册中心工程一个叫eureka_register_service_master.另外一个叫eureka_register_service_backup eureka_register_service_master的application.properties配置如下?server.port=7998 eureka.client.register-with-eureka=false eureka.cli

linux学习之路二 ------登陆篇

上一篇中讲了如何搭建虚拟机学习平台,在这篇中将介绍如何登陆Linux系统和修改超级用户密码 1.打开虚拟机后,进入界面,需要让我们输入账号密码,在前面安装的时候我们设置过.如图 2.输入账号密码,输入密码的时候是不显示的,所以不要认为没有输入.如图 3.验证成功之后,出现[[email protected] ~]$ ,则说明登陆成功,Linux系统有超级用户和普通用户之分,超级用户也就是root用户了,如我们的就是普通用户, 普通用户[[email protected] ~]$中$就是代表了普通