博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
constructor 与 object
阅读量:4687 次
发布时间:2019-06-09

本文共 2908 字,大约阅读时间需要 9 分钟。

对象的constructor属性引用了该对象的构造函数.对于 Object 对象,该指针指向原始的 Object() 函数.如下

var obj = {};obj.constructor    //ƒ Object() { [native code] }obj.constructor == Object    //truevar arr = [];arr.constructor    //ƒ Array() { [native code] }arr.constructor == Array    //truefunction Fun(){    console.log('function');}var fun = new Fun();    //实例化fun.constructor    //ƒ Fun(){console.log('function')}    【打印出来的引用是Fun函数,说明fun的引用是Fun函数】Fun.constructor    //ƒ Function() { [native code] }      【打印出来的引用是Funcion函数,说明Fun的引用是Function函数】fun.constructor == Fun    //true    【再次证明fun的constructor属性引用了fun对象的构造函数】fun.constructor == Fun.constructor    //false---------------------

constructor常用于判断未知对象的类型,如下:

function isArray (val){    var isTrue = typeof val == 'object' && val.constructor == Array;    return isTrue?true:false;}var arr = isArray([1,2,3,4,5]);console.log(arr);    //true1--------------------- 作者:汪洋啊 来源:CSDN 原文:https://blog.csdn.net/wyangonly/article/details/79089881 版权声明:本文为博主原创文章,转载请附上博文链接!

原文:https://blog.csdn.net/wyangonly/article/details/79089881 

Object:object是js自带的函数对象,可以有属性和方法。在定义以后,不能在使用new创建对象实例,可以复制给其他变量,多个变量同时引用一个对象,或者克隆对象。具有多态性,无法继承,除非用复制的方式来实现(1)Object.assign()可以用作对象的复制var obj = { a: 1 };var copy = Object.assign({}, obj);console.log(copy); // { a: 1 }可以用作对象的合并 var o1 = { a: 1 };var o2 = { b: 2 };var o3 = { c: 3 };var obj = Object.assign(o1, o2, o3);console.log(obj); // { a: 1, b: 2, c: 3 }console.log(o1);  // { a: 1, b: 2, c: 3 }, 注意目标对象自身也会改变。(2)Object.is() Object.is('haorooms', 'haorooms');     // trueObject.is(window, window);   // trueObject.is('foo', 'bar');     // falseObject.is([], []);           // falsevar test = { a: 1 };Object.is(test, test);       // trueObject.is(null, null);       // true// 特例Object.is(0, -0);            // falseObject.is(-0, -0);           // trueObject.is(NaN, 0/0);         // true(3)Object.keys()这个方法会返回一个由给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in 循环还会枚举其原型链上的属性)。/* 类数组对象 */var obj = { 0 : "a", 1 : "b", 2 : "c"};alert(Object.keys(obj));// 弹出"0,1,2"/* 具有随机键排序的数组类对象 */var an_obj = { 100: 'a', 2: 'b', 7: 'c' };console.log(Object.keys(an_obj));// console: ['2', '7', '100'](4)Object.create() Object.create(proto, [ propertiesObject ])第二个参数是可选的,主要用于指定我们创建的对象的一些属性,例:ar o;o = Object.create(Object.prototype, {  // foo会成为所创建对象的数据属性  foo: { writable:true, configurable:true, value: "hello" },  // bar会成为所创建对象的访问器属性  bar: {    configurable: false,    get: function() { return 10 },    set: function(value) { console.log("Setting `o.bar` to", value) }}}) // 创建一个以另一个空对象为原型,且拥有一个属性p的对象o = Object.create({}, { p: { value: 42 } })// 省略了的属性特性默认为false,所以属性p是不可写,不可枚举,不可配置的:o.p = 24o.p//42o.q = 12for (var prop in o) {   console.log(prop)}//"q"delete o.p//false//创建一个可写的,可枚举的,可配置的属性po2 = Object.create({}, { p: { value: 42, writable: true, enumerable: true, configurable: true } });

 

转载于:https://www.cnblogs.com/HL345/p/9943560.html

你可能感兴趣的文章
多线程之进度条
查看>>
程序启动的完整过程
查看>>
java资料——哈希表(散列表)(转)
查看>>
反射,invoke()
查看>>
iServer6R使用WMTS自定义比例尺出图
查看>>
pinyin4j的使用
查看>>
Android_ 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
查看>>
tcpcopy用法
查看>>
34个加速页面载入速度的技巧
查看>>
MAC Objective-C 开发经典书籍推荐
查看>>
OSGi bundle之间互相通信的方法
查看>>
C++ 沉思录——Chap8:一个面向对象程序范例
查看>>
.NET 的编码
查看>>
数据存储——手机内部文件存储
查看>>
HDU 2586 LCA
查看>>
linux安装openldap步骤
查看>>
九度OJ 1035:找出直系亲属(二叉树)
查看>>
hive left outer join的问题
查看>>
32位Win7下安装与配置PHP环境(二)
查看>>
图片、浏览器-HTML5/CSS3系列教程:使用SVG图片-by小雨
查看>>