JavaScript知识点总结(十一)之js中的Object类详解


Posted in Javascript onMay 31, 2016

JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍生的。Object对象主要用于将任意数据封装成对象形式。

一、Object类介绍

Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数。

二、Object类主要属性

1.constructor:对象的构造函数。

2.prototype:获得类的prototype对象,static性质。

三、Object类主要方法

1.hasOwnProperty(propertyName)

判断对象是否有某个特定的属性。必须用字符串指定该属性,例如,obj.hasOwnProperty("name"),返回布尔值。此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。

var str ="";
alert("str.hasOwnProperty(\"split\")的结果是:"+str.hasOwnProperty("split")); //return false
alert("String.prototype.hasOwnProperty(\"split\")的结果是:"+String.prototype.hasOwnProperty("split"));//return true

运行结果:

JavaScript知识点总结(十一)之js中的Object类详解

hasOwnProperty的用法不仅仅在此,在Jquery中在编写插件中,少不了的一步,就是初始化参数,其中一个很重要的方法就是$.extend();他的原理就是应用了hasOwnProperty()方法;利用for in 循环遍历对象成员中,有没有相同名称的对象成员,有的话就用这个新的对象成员替换掉旧的,通过这种方式,我们就可以通过修改方法中的参数变化,从而控制程序的流程,而对于那些没有改变的部分,仍使用默认值进行控制,我们自己也可以简单的模拟一下这个extend函数,如下

function extend(target,source){//target 旧的 source新的
for (var i in source){
if(target.hasOwnProperty(i)){
target[i]=source[i];
}
}
return target;
}
var a={"first":,"second":"lyl","third":"bob"};
var b={"third":"leo"};
extend(a,b);
for(var i in a){
alert(a[i]);//原本是bob,现在变成leo了
}

  2.isPrototypeOf(object)

判断该对象是否为另一个对象的原型。

obj1.isPrototypeOf(obj2);

obj1是 一个对象的实例;obj2是另一个将要检查其原型链的对象。原型链可以用来在同一个对象类型的不同实例之间共享功能。如果obj2的原型链中包含 obj1,那么isPrototypeOf 方法返回 true。如果obj2不是一个对象或者obj1没有出现在obj2中的原型链中,isPrototypeOf 方法将返回 false。

<script type="text/javascript">
function foo(){
this.name = 'foo';
}
function bar(){
}
bar.prototype = new foo();
var goo = new bar();
alert(goo.name); //foo
alert(bar.prototype.isPrototypeOf(goo));//true,在bar的原型链中有当前对象goo,则isPrototypeOf方法返回true
</script>

3.propertyIsEnumerable(propertyName)

通过这个方法我们可以检测出这个对象成员是否是可遍历的,如果是可遍历出来的,证明这个对象就是可以利用for in 循环进行遍历的,

格式如下:obj.propertyIsEnumerable(propertyName)

如果 propertyName存在于 obj中且可以使用一个 For…In 循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。典型地,预定义的属性不是可列举的,而用户定义的属性总是可列举的。

4.toString():返回对象对应的字符串

5.valueOf():返回对象对应的原始类型

以上5个方法都是Object.prototype上定义的,ECMAScript 中的所有对象都由Object继承而来,所以在ECMAScript上的所有对象都具有以几个方法

测试代码1:

var p = new Object(); //通过Object直接创建对象
//为p对象动态添加属性
p.Age=;
p.Name="孤傲苍狼";
//扩展Object类,为Object类添加一个Show方法
Object.prototype.Show=function(){
alert(this.Age+"\t"+this.Name);
}
alert(p.Age);
p.Show();
document.write("<pre>");
document.writeln("p.constructor:"+p.constructor);//得到对象的构造函数
document.writeln("Object.prototype:"+Object.prototype);//得到prototype对象,prototype是静态属性,只能通过"类名.prototype"去访问
document.writeln("p.isPrototypeOf(p):"+p.isPrototypeOf(p));
document.writeln("p.hasOwnProperty(\"Age\"):"+p.hasOwnProperty("Age"));
document.writeln("p.propertyIsEnumerable(\"Age\"):"+p.propertyIsEnumerable("Age"));
document.writeln("p.toString():"+p.toString());
document.writeln("p.valueOf():"+p.valueOf());
document.write("</pre>");

运行结果:

JavaScript知识点总结(十一)之js中的Object类详解

测试代码2:

var Car = function(){};
Car.prototype.hello = function(){
alert("hello car");
};
var car = new Car();
car.f = function() {
alert("自定义方法");
}
document.write("<pre>");
document.writeln("car.hasOwnProperty(\"f\")的结果是:"+car.hasOwnProperty("f"));//ture,car对象有f方法
document.writeln("car.propertyIsEnumerable(\"f\")的结果是:"+car.propertyIsEnumerable("f"));//ture,car对象有f方法,f方法是可以被枚举的
document.writeln("car.hasOwnProperty(\"hello\")"+car.hasOwnProperty("hello")); // false,因为car本身没有hello方法
document.writeln("car.propertyIsEnumerable(\"hello\")的结果是:"+car.propertyIsEnumerable("hello")); // false,没有这个方法当然不能枚举
document.writeln("car.constructor.prototype.hasOwnProperty(\"hello\")的结果是:"+car.constructor.prototype.hasOwnProperty("hello"));// true,car的类Car的原型有hello方法
document.writeln("car.constructor.prototype.propertyIsEnumerable(\"hello\")的结果是:"+car.constructor.prototype.propertyIsEnumerable("hello"));// true, car的类的Car的原型hello方法是可以被枚举的
document.writeln("Car.prototype.hasOwnProperty(\"hello\")的结果是:"+Car.prototype.hasOwnProperty("hello"));// true,car的类Car的原型有hello方法
document.writeln("Car.prototype.propertyIsEnumerable(\"hello\")的结果是:"+Car.prototype.propertyIsEnumerable("hello"));
document.write("</pre>");

运行结果:

JavaScript知识点总结(十一)之js中的Object类详解

以上所述是小编给大家介绍的JavaScript知识点总结(十一)之js中的Object类详解,希望对大家有所帮助

Javascript 相关文章推荐
JavaScript 面向对象的之私有成员和公开成员
May 04 Javascript
jquery下json数组的操作实现代码
Aug 09 Javascript
javascript中的float运算精度实例分析
Aug 21 Javascript
js+html+css实现鼠标移动div实例
Jan 30 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
Jan 21 Javascript
实践中学习AngularJS表单
Mar 21 Javascript
js判断复选框是否选中及选中个数的实现代码
May 30 Javascript
jquery.zclip轻量级复制失效问题
Jan 08 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
Sep 16 Javascript
node.js微信小程序配置消息推送的实现
Feb 13 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
Mar 03 Javascript
基于jQuery实现点击列表加载更多效果
May 31 #Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
May 31 #Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 #Javascript
Bootstrap表单布局样式代码
May 31 #Javascript
jQuery使用经验小技巧(推荐)
May 31 #Javascript
JavaScript知识点总结(十)之this关键字
May 31 #Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 #Javascript
You might like
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP多维数组排序array详解
2017/11/21 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
限制文本字节数js代码
2007/03/06 Javascript
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
javascript学习之json入门
2016/12/22 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
python微信好友数据分析详解
2018/11/19 Python
python导入坐标点的具体操作
2019/05/10 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
浅谈Python 参数与变量
2020/06/20 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
临床医学专业毕业生的自我评价
2013/10/17 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
Python列表的索引与切片
2022/04/07 Python
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers
nginx设置资源请求目录的方式详解
2022/05/30 Servers