javascript一些底层方法总结及用法
本地对象:ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)内置对象:ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。宿主对象:所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。所有 BOM 和 DOM 对象都是宿主对象。enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor'];// hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。 // Ie8以下不支持dom. hasOwnProperty 方法。 // isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。1、hasOwnProperty作用:是用来判断一个对象是否有你给出名称的属性或对象。调用方式:object.hasOwnProperty(proName)参数:object(必须) 对象的实例;proName(必须) 一个属性名称的字符串值注意:如果 object 具有带指定名称的属性,则 hasOwnProperty 方法返回 true,否则返回 false。此方法不会检查对象原型链中的属性。该属性必须是对象本身的一个成员。Internet Explorer 8 和低于其的版本的宿主对象不支持该属性。代码举例:在下面的示例中,所有 String 对象共享一个公共 split 方法。 下面的代码将显示 false 和 true。var s = new String("Sample");console.log(s.hasOwnProperty("split"));console.log(String.prototype.hasOwnProperty("split"));2、in 运算符作用:测试一个对象中是否存在一种属性。调用方式:result = property in object参数:result(必须) 任何变量;proName(必须) 计算结果为字符串表达式的表达式;object(必须) 任意对象注意:in 运算符确定对象中是否有名为 property 的属性。 它还确定属性是否为对象的原型链的一部分。代码举例:code1:var myObject = new Object();myObject.name = "James";myObject.age = "22";myObject.phone = "555 0234";if ("phone" in myObject) {console.log("property is present");} else {console.log("property is not present");}code2:console.log("toString" in "zheyang");console.log("toString" in new String("zheyang"))思考: var aa = "zheyang" 与 aa = new String("zheyang") 的区别 3、valueOf作用:返回指定对象的原始值。调用方式:object.valueOf();注意:在JS里数字其实都是浮点数。代码举例:var aa = 123 console.log(aa.valueOf())console.log(123.valueOf())console.log(123..valueOf())console.log((123).valueOf())4、typeof作用:返回指定对象的类型。 调用方式:typeof object;代码举例:var aa = 12;var bb = new Number(12)console.log(typeof aa)console.log(typeof bb)5、instanceof作用:返回一个布尔值,该值指示一个对象是否为特定类或构造函数的一个实例。调用方式:object instanceof class;参数:object(必须) 一个对象;class(必须) 任何对象类或构造函数;注意:如果 object 是 class 或构造函数的实例,则 instanceof 运算符返回 true。如果 object 不是指定类或函数的实例,或者 object 为 null,则返回 false。JavaScript Object 很特殊,当且仅当对象用 Object 构造函数构造时,对象才被视为 Object 的实例。代码举例:function ClassA() {}function ClassB() {}ClassB.prototype = {constructor: ClassA}function ClassC(){ClassA.call(this);}function ClassD(){}var obj = new ClassAvar obj2 = new ClassB;var obj3 = new ClassC;ClassD.prototype = obj2;var obj4 = new ClassD;console.log(obj instanceof ClassA)console.log(obj2 instanceof ClassB)console.log(obj2 instanceof ClassB)console.log(obj3 instanceof ClassA)console.log(obj4 instanceof ClassA)console.log(ClassA instanceof Function)6、isPrototypeOf作用:确定一个对象是否存在于另一个对象的原型链中。调用方式:prototype.isPrototypeOf(object)参数:prototype(必须) 对象原型;object(必须) 另一个对象,将对其原型链进行检查注意:如果 object 的原型链中具有 prototype,则 isPrototypeOf 方法返回 true。原型链用于在同一个对象类型的不同实例之间共享功能。当 object 不是对象或当 prototype 没有出现在 object 的原型链中时,isPrototypeOf 方法返回 false。代码举例:function Rectangle() {}var rec = new Rectangle();cosole.log(Rectangle.prototype.isPrototypeOf(rec));7、propertyIsEnumerable作用:返回布尔值,该值指示指定属性是否为对象的一部分以及该属性是否是可枚举的。调用方式:object.propertyIsEnumerable(propName)参数:object(必须) 对象实例;propName(必须) 一个属性名称的字符串值;注意:如果 propName 存在于 object 中且可以使用一个 For...In 循环枚举出来,则 propertyIsEnumerable 属性将返回 true。如果 object 不具有所指定名称的属性或者所指定的属性不是可枚举的,则 propertyIsEnumerable 属性将返回 false。通常,预定义的属性不是可枚举的,而用户定义的属性总是可枚举的。propertyIsEnumerable 属性不考虑原型链中的对象。代码举例:var a = new Array("apple", "banana", "cactus");var s = a.propertyIsEnumerable(1);console.log (s);8、toString / toLocaleString作用:可把一个对象转换为字符串,并返回结果。调用方式:object.toString(num)参数:object(必须) 对象;num(非必须) ;注意:如果对象是数子,则参数可为要转换的进制数,默认为10如果是布尔类型,则会转换为对应的字符串代码举例:var aa = 123console.log(aa.toString(2))var bb = new Boolean(true)console.log(bb)9、constructor代码举例: constructor.parent 10、 Function 与 ObjectFunction:首先回顾一下函数对象的概念,函数就是对象,代表函数的对象就是函数对象。 所有的函数对象是被Function这个函数对象构造出来的。 也就是说,Function是最顶层的构造器。 它构造了系统中所有的对象,包括用户自定义对象,系统内置对象,甚至包括它自已。 这也表明Function具有自举性(自已构造自己的能力)。 这也间接决定了Function的[[call]]和[[constructor]]逻辑相同。Object:对于Object它是最顶层的对象,所有的对象都将继承Object的原型, 但是你也要明确的知道Object也是一个函数对象, 所以说Object是被Function构造出来的。代码举例: alert(Function instanceof Function);//true alert(Function instanceof Object);//true alert(Object instanceof Function);//true function Foo() {}; var foo = new Foo(); alert(foo instanceof Foo); // true alert(foo instanceof Function); // false alert(foo instanceof Object); // true alert(Foo instanceof Function); // true alert(Foo instanceof Object); // true
转载于:https://www.cnblogs.com/haohaoday/p/3944987.html
javascript一些底层方法总结及用法相关推荐
- javascript经典实例_提升JavaScript变量的方法有哪些?
程序中的变量无处不在.它们是始终相互交互的小数据和逻辑片段:并且此活动使应用程序存活. 在JavaScript中,使用变量的一个重要方面是提升,它定义了何时可以访问变量.如果您正在寻找有关这方面的详细 ...
- 判断javascript数组的方法
2019独角兽企业重金招聘Python工程师标准>>> 判断javascript数组的方法 var is_array=function(){ return value &&a ...
- python操作js中的输入_Python调用JavaScript代码的方法
准备阶段: 以一段简单的JS脚本为例,将代码写入到文件中,其中,定义了一个方法,计算两个数的和. //norm.js //计算两个数的和 function add(num1, num2) { retu ...
- left join 和join区别_sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...
- JavaScript中pop() 方法
定义和用法 pop() 方法用于删除并返回数组的最后一个元素. 返回值 arrayObject 的最后一个元素. 说明 pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1 ...
- JavaScript常用事件+方法
javascript常用事件onclick 单击 ondblclick 双击 onfocus 元素获得焦点 onblur 元素失去焦点 onmouseover 鼠标移到某元素之上 onmouseout ...
- php js页面刷新,JavaScript刷新页面location.reload()的用法
在我们日常工作中,在进行JavaScript编辑过程中,很多时候都需要使用JS刷新页面的功能,所以我们会经常用到location.reload(),今天我们就大家了解下JavaScript刷新页面lo ...
- 这是如何更好地利用JavaScript数组的方法
by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...
- IE下javascript的console方法
IE下javascript的console方法 FireFox 和 Chrome 下调试JS都有console,IE6下没有.特用此办法来兼容IE6. <br /><pre lang ...
最新文章
- 第7件事 产品的5个要素
- 莫烦Pytorch神经网络第三章代码修改
- 2017.8.16 喵星球上的点名 思考记录
- iptables官方文档
- 网络蜘蛛Spider的逻辑Logic(一)
- spleetergui2.9汉化版下载 | SpleeterGui(音轨分离软件)官方中文版V2.9.1 | 人声分离软件下载
- DBeaver-Driver-All ( DBeaver驱动包,所有JDBC驱动整合包)
- 【Python百日进阶-Web开发-Feffery】Day437 - fac实例:使用fac中上传组件时实现自主控制uploadId
- Django中的Model(操作表) - 第五轻柔的code - 博客园
- 网络——介质访问控制
- 初识C语言 | C语言零基础入门(第一天)
- 宗地权属图生成的解决方案设计
- android硬解码x265,Android 设置硬解码 h265 失败
- SubString 函数总结
- linux中解压rar文件
- 硬盘为什么最多只有四个主分区
- 产品创新与研发管理的八大典型问题
- linux7网口起不来,centos7 双网口绑定
- Oracle在中国的裁员暗示了中国的云服务市场什么?
- 攻防世界sherlock
热门文章
- LeetCode 2125. 银行中的激光束数量
- LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)
- LeetCode 1053. 交换一次的先前排列
- 免费python基础笔记_python基础笔记(一)
- erp故障处理流程图_PLC故障常见原因及处理方法!
- Jquery事件、冒泡、委托与节点
- 模块概念与使用及注意事项
- python各种岗位薪资_python编程语言岗位薪资真不是盖的
- 商务搜索引擎_2019年中国网民搜索引擎使用情况研究报告
- 李宏毅《机器学习》作业班+带打比赛