Object.prototype 方法: hasOwnProperty 概念:用来判断一个对象中的某一个属性是否是自己提供的(主要是判断属性是原型继承还是自己提供的) 语法:对象.hasOwnProperty('属性名') var o = { name: 'jim' }; function Person() { this.age = 19; this.address='北京'; this.work='上海'; } Person.prototype = o; var p = new Person(…
方法: hasOwnProperty isPrototypeOf propertyIsEnumerable hasOwnProperty 该方法用来判断一个对象中的某一个属性是否是自己提供的( 住要用在判断属性是原型继承的还是自己提供的 ) 语法: 对象.hasOwnProperty( '属性名' ) -> boolean isPrototypeOf 凡是看到 of 翻译成 的, 反过来翻译: prototype of obj, 翻译成 obj 的 原型 因此该方法的含义是: xxx 是 xxx…
昨天边参考es5-shim边自己实现Function.prototype.bind,发现有不少以前忽视了的地方,这里就作为一个小总结吧. 一.Function.prototype.bind的作用 其实它就是用来静态绑定函数执行上下文的this属性,并且不随函数的调用方式而变化. 示例: test('Function.prototype.bind', function(){ function orig(){ return this.x; }; var bound = orig.bind({x: '…
在初学Javascript时,我们也许不需要担心函数绑定的问题,但是当我们需要在另一个函数中保持上下文对象this时,就会遇到相应的问题了,我见过很多人处理这种问题都是先将this赋值给一个变量(比如self._this.that等),尤其是var that = this是我见的最多的,这样当你改变环境之后就可以使用它.这些都是可以的,但是还有一种更好的.更专有的方法,那就是使用Function.prototype.bind,下面进行详尽的讲解. 第一部分:需要解决的问题 首先看下面的代码var…
宿主对象,在javascript中有三类对象,本地对象,内置对象和宿主对象.其他两类暂且不提,宿主对象是指什么呢(DOM BOM),控制台对象是文档对象模型的扩展,也被认为是宿主对象.那么,它们有什么缺陷呢?在IE9之前,宿主对象不是继承自Object,它们的方法也不继承自Function,IE9之后就大有改进了. 看下IE8与IE9的document.getElementById ie8: ie9: 我们可以看到,ie9的document.getElementById是有Function.pr…
* Function.prototype.bind Function.prototype.bind = function() { var self = this, context = [].shift.call(arguments), args = [].slice.call(arguments); return function() { return self.apply(context, [].concat.call(args, [].slice.call(arguments))); } }…
一.前言                                大家先预计一下以下四个函数调用的结果吧! var test = function(){ console.log('hello world') return 'fsjohnhuang' }test.call() // ① Function.prototype.call(test) // ② Function.prototype.call.call(test) // ③ Function.prototype.call.call(…
ECMAScript Edition5 IE9+支持原生,作用为将一个对象的方法绑定到另一个对象上执行. Function.prototype.bind = Function.prototype.bind || function(){ // 该方法当前所属的对象. var self = this; var args = Array.prototype.slice.call(arguments); // 绑定的对象. var o = args.shift(); // 如上操作后将绑定时的参数也绑定…
语法: fn.bind(obj,arg1,arg2,arg3...) bind是es5新增的方法,顾名思义,它的作用是将函数绑定到某个对象上,就像是某个对象调用方法一样.其本质还是改变了该函数的上下文(context),它跟call和apply不一样的地方是,在调用之后会生成一个新函数.比如: , function fn(){ return this.x + y; } }; var obj1 = fn.bind(obj); obj1(); 而es3中却没有此方法,我会这样去实现: functio…
Function.prototype.apply()|Function.prototype.call() apply()方法可以在使用一个指定的 this 值和一个参数数组(或类数组对象)的前提下调用某个函数或方法.call()方法类似于apply(),不同之处仅仅是call()接受的参数是参数列表. 简而言之: apply()一个this,多个参数 call()   一个this,一个参数 语法 fun.apply(thisArg[, argsArray])|fun.call(thisArg[…