javascript学习(八)对象结构

本文探讨JavaScript中的Object对象,它是所有对象的父级,包括内建对象。讲解了如何通过Object.prototype为对象添加属性,以及如何利用in和hasOwnProperty检测属性。接着,介绍了对象的结构,展示了原型链的工作原理。最后,详细阐述了Object.prototype的几个关键方法,如hasOwnProperty(), isPrototypeOf(), propertyIsEnumerable(), toString()和valueOf(),这些方法在处理对象属性和原型链时起着重要作用。" 131569976,13957942,Vue项目中集成iconfont字体图标教程,"['Vue.js', '前端框架', '图标库', 'SVG图标', 'CSS样式']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Object对象

Object对象是js中所有对象的父级对象,包括内建对象。
Object.prototype可以为所有的Object类型的对象添加属性
可以通过in检测属性是否在对象上,包括继承的属性,如

function func() {}
func.prototype.z = 10;
var f = new func();
alert('z' in f);

如果不想检测继承的属性,就使用hasOwnProperty。

alert(f.hasOwnProperty('x'));

2.对象的结构

这里我们新建一个对象

var obj = {x : 1, y : 2};
alert(obj.toString()); //[object Object]

想一下,我们这里并没有定义toString方法,怎么会有返回值呢?
其实这里就是继承了Object对象,toString方法就是在Object里定义的。

function func() {}
func.prototype.z = 10;
var obj = new func();
alert(obj.z);

我们还看这段代码,其实它内部关系是这样的:
这里写图片描述

最底层是obj,它继承自foo.prototype,z这个属性也是保存在这里的,同时foo.prototype也是继承自object.prototype,最后object.prototype继承自null。这也就是原型链,这里的每个属性都有属性特性,对象也有特性,后面我会介绍。

3.Object.prototype

JavaScript语言的所有对象都是由Object衍生的对象,所有对象都继承了Object.prototype的方法和属性,Object.prototype方法如下:
(1)Object.prototype.hasOwnProperty()
功能:检测某个对象是否含有指定的自身属性
语法:obj.hasOwnProperty(prop)
描述:这个方法可以用来检测一个对象是否含有特定的自身属性,和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性

(2)Object.prototype.isPrototypeOf()
功能:检测一个对象是否存在于另一个对象的原型链上
语法:prototype.isPrototypeOf(object)
例如:

function test(){
  var re = new RegExp(); //初始化变量。
  return (RegExp.prototype.isPrototypeOf(re)); //返回true。
}

(3)Object.prototype.propertyIsEnumerable()
功能:检测指定的属性名是否是当前对象可枚举的自身属性
语法:obj.propertyIsEnumerable(prop)
描述:有些属性虽然可以通过 for…in 循环遍历到,但因为它们不是自身属性,而是从原型链上继承的属性,所以该方法也会返回false;如果对象没有指定的属性,该方法也返回 false。

(4)Object.prototype.toString()
功能:返回一个代表该对象的字符串
语法:object.toString()

(5)Object.prototype.valueOf()
功能:返回的诗this值,即对象本身
语法:object.valueOf()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值