本地对象: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一些底层方法总结及用法相关推荐

  1. javascript经典实例_提升JavaScript变量的方法有哪些?

    程序中的变量无处不在.它们是始终相互交互的小数据和逻辑片段:并且此活动使应用程序存活. 在JavaScript中,使用变量的一个重要方面是提升,它定义了何时可以访问变量.如果您正在寻找有关这方面的详细 ...

  2. 判断javascript数组的方法

    2019独角兽企业重金招聘Python工程师标准>>> 判断javascript数组的方法 var is_array=function(){ return value &&a ...

  3. python操作js中的输入_Python调用JavaScript代码的方法

    准备阶段: 以一段简单的JS脚本为例,将代码写入到文件中,其中,定义了一个方法,计算两个数的和. //norm.js //计算两个数的和 function add(num1, num2) { retu ...

  4. left join 和join区别_sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇

    Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...

  5. JavaScript中pop() 方法

    定义和用法 pop() 方法用于删除并返回数组的最后一个元素. 返回值 arrayObject 的最后一个元素. 说明 pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1 ...

  6. JavaScript常用事件+方法

    javascript常用事件onclick 单击 ondblclick 双击 onfocus 元素获得焦点 onblur 元素失去焦点 onmouseover 鼠标移到某元素之上 onmouseout ...

  7. php js页面刷新,JavaScript刷新页面location.reload()的用法

    在我们日常工作中,在进行JavaScript编辑过程中,很多时候都需要使用JS刷新页面的功能,所以我们会经常用到location.reload(),今天我们就大家了解下JavaScript刷新页面lo ...

  8. 这是如何更好地利用JavaScript数组的方法

    by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...

  9. IE下javascript的console方法

    IE下javascript的console方法 FireFox 和 Chrome 下调试JS都有console,IE6下没有.特用此办法来兼容IE6. <br /><pre lang ...

最新文章

  1. 第7件事 产品的5个要素
  2. 莫烦Pytorch神经网络第三章代码修改
  3. 2017.8.16 喵星球上的点名 思考记录
  4. iptables官方文档
  5. 网络蜘蛛Spider的逻辑Logic(一)
  6. spleetergui2.9汉化版下载 | SpleeterGui(音轨分离软件)官方中文版V2.9.1 | 人声分离软件下载
  7. DBeaver-Driver-All ( DBeaver驱动包,所有JDBC驱动整合包)
  8. 【Python百日进阶-Web开发-Feffery】Day437 - fac实例:使用fac中上传组件时实现自主控制uploadId
  9. Django中的Model(操作表) - 第五轻柔的code - 博客园
  10. 网络——介质访问控制
  11. 初识C语言 | C语言零基础入门(第一天)
  12. 宗地权属图生成的解决方案设计
  13. android硬解码x265,Android 设置硬解码 h265 失败
  14. SubString 函数总结
  15. linux中解压rar文件
  16. 硬盘为什么最多只有四个主分区
  17. 产品创新与研发管理的八大典型问题
  18. linux7网口起不来,centos7 双网口绑定
  19. Oracle在中国的裁员暗示了中国的云服务市场什么?
  20. 攻防世界sherlock

热门文章

  1. LeetCode 2125. 银行中的激光束数量
  2. LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)
  3. LeetCode 1053. 交换一次的先前排列
  4. 免费python基础笔记_python基础笔记(一)
  5. erp故障处理流程图_PLC故障常见原因及处理方法!
  6. Jquery事件、冒泡、委托与节点
  7. 模块概念与使用及注意事项
  8. python各种岗位薪资_python编程语言岗位薪资真不是盖的
  9. 商务搜索引擎_2019年中国网民搜索引擎使用情况研究报告
  10. 李宏毅《机器学习》作业班+带打比赛