JavaScript 对象所有API解析

一:Object构造器的成员

Object.prototype:该属性是所有对象的原型(包括 Object对象本身),语言中的其他对象正是通过对该属性上添加东西来实现它们之间的继承关系的。所以要小心使用。

二:Objetc.prototype的成员

Object.prototype.constructor:该属性指向用来构造该函数对象的构造器

Object.prototype.constructor === Object; // true
var o = new Object();
o.constructor === Object; // true

Object.prototype.toString(radix):该方法返回的是一个用于描述目标对象的字符串。特别地,当目标是一个Number对象时,可以传递一个用于进制数的参数radix,该参数radix,该参数的默认值为10。

var o = {prop:1};
o.toString(); // '[object Object]'
var n = new Number(255);
n.toString(); // '255'
n.toString(16); // 'ff'

 Object.prototype.toLocaleString():该方法的作用与toString()基本相同,只不过它做一些本地化处理。该方法会根据当前对象的不同而被重写,例如Date(),Number(),Array(),它们的值都会以本地化的形式输出。当然,对于包括Object()在内的其他大多数对象来说,该方法与toString()是基本相同的。在浏览器环境下,可以通过BOM对象Navigatorlanguage属性(在IE中则是userLanguage)来了解当前所使用的语言。

Object.prototype.valueOf():该方法返回的是用基本类型所表示的this值,如果它可以用基本类型表示的话。如果Number对象返回的是它的基本数值,而Date对象返回的是一个时间戳(timestamp)。如果无法用基本数据类型表示,该方法会返回this本身。

 Object.prototype.hasOwnProperty(prop):该方法仅在目标属性为对象自身属性时返回true,而当该属性是从原型链中继承而来或根本不存在时,返回false

Object.prototype.isPrototypeOf(obj):如果目标对象是当前对象的原型,该方法就会返回true,而且,当前对象所在原型上的所有对象都能通过该测试,并不局限与它的直系关系。

var s = new String('');
Object.prototype.isPrototypeOf(s); // true
String.prototype.isPrototypeOf(s); // true
Array.prototype.isPrototypeOf(s); // false

Object.defineProperty:

var person = {};
// 除了value的默认值为undefined以外,其他的默认值都为false
Object.defineProperty(person, 'legs', {
    set:function(v) {
        return this.value = v;
    },
    get: function(v) {
        return this.value;
    },
    value: 2,
    writable: true,
    configurable: true,
    enumerable: true
});

Object.defineProperties(obj, props):该方法的作用与defineProperty()基本相同,只不过它可以用来一次定义多个属性。

Object.getPrototypeOf(obj) :返回obj对象的原型

Object.create(obj, descr):该方法主要用于创建一个新对象,并为其设置原型,用属性描述符来定义对象的原型属性。

var parent = {hi: 'Hello'};
var o = Object.create(parent, {
    prop: {
        value: 1
    }
});
o.hi; // 'Hello'
// 获得它的原型
Object.getPrototypeOf(parent) === Object.prototype; // true 说明parent
的原型是Object.prototype
Object.getPrototypeOf(o); // {hi: "Hello"} // 说明o的原型是{hi: "Hello"}
o.hasOwnProperty('hi'); // false 说明hi是原型上的
o.hasOwnProperty('prop'); // true 说明prop是原型上的自身上的属性。

Object.getOwnPropertyDesciptor(obj, property) :该方法可以让我们详细查看一个属性的定义。甚至可以通过它一窥那些内置的,之前不可见的隐藏属性。

Object.getOwnPropertyNames(obj) :该方法返回一个数组,其中包含了当前对象所有属性的名称(字符串),不论它们是否可枚举

Object.preventExtensions(obj)和Object.isExtensible(obj):preventExtensions()方法用于禁止向某一对象添加更多属性,而isExtensible()方法则用于检查某对象是否还可以被添加属性。

Object.seal(obj)和Object.isSeal(obj):seal()方法可以让一个对象密封,并返回被密封后的对象。seal()方法的作用与preventExtensions()基本相同,但除此之外,它还会将现有属性设置成不可配置。也就是说,在这种情况下,我们只能变更现有属性的值,但不能删除或(用defineProperty())重新配置这些属性,例如不能将一个可枚举的属性改成不可枚举。

Object.freeze(obj)和Object.isFrozen(obj): freeze()方法用于执行一切不受seal()方法限制的属性值变更。Object.freeze() 方法可以冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值