`
rockyuse
  • 浏览: 191834 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

模拟apply和call

 
阅读更多
<html>
<head>
<script type="text/javascript">
Function.prototype.Apply = function (obj, arr) {
	obj = obj || window;
	obj._tempFunction = this;
	var rv;
	if (!arr) {
		rv = obj._tempFunction();
	} else {
		var args = [];
		for (var i = 0, len = arr.length; i < len; i++) {
			args.push('arr[' + i + ']');
		}
		rv = eval("obj._tempFunction(" + args + ")");
	}
	delete obj._temFunction;
	return rv;
}
Function.prototype.Call = function () {
	return this.Apply(Array.prototype.shift.Apply(arguments), arguments);
}

var obj = {};
function f(a,b,c) {
	console.log(this == obj);//看看Apply和Call 是不是把函数内的this 指向了 obj对象
	console.log(a + b + c);
}
f(1, 2, 3);
f.Apply(obj, [4, 5, 6]);
f.Call(obj, 7, 8, 9);

</script>
</head>
<body>
</body>
</html>

 

分享到:
评论

相关推荐

    Vuact#Blog#JavaScript深入 模拟实现call、apply1

    (1)call 的第一个参数改变了this 的指向 (2)call 将后面的参数依次赋给了bar函数的形参 (3)执行bar函数 (1)改变this指向:我们将

    js代码-this的指向(模拟8):使用 bind 、 call 、 apply的形式自定义this的指向

    js代码-this的指向(模拟8):使用 bind 、 call 、 apply的形式自定义this的指向

    leetcode下载-blog:博客

    call和apply模拟实现 bind模拟实现 new模拟实现 深浅拷贝 函数柯里化 防抖和节流 函数递归 ES6 let, const Symbol, Iterator和Map Generator, Promise和Async Proxy和defineProperty Web 浏览器 浏览器渲染 事件循环...

    javascript 原型继承介绍

    暑假还搞了ext4的web desktop,...(其实这里是错的,感谢 @记忆的森林 的提示,还可以用apply和call去实现) 因为javascript没有专门的机制去实现类,所以这里只能是借助它的函数能够嵌套的机制来模拟实现类。在javas

    JS继承 笔记

    JS继承 JavaScript中没有类...而改变函数的执行环境可以使用call()和apply()两种 方法来实现。 我们首先创建一个Animal“类”(因为JS中没有类的概念,这里只是一个模拟,它实际上只是一个 Function函数对象)。 代码如

    interview-question:收集一些面试题

    interview-question 题目列表 CSS JavaScript 6. 函数节流和防抖的概念以及常见的使用场景 7. ['1', '2', '3'].map...23. 模拟实现call、apply 24. 模拟实现bind函数 25. JavaScript内存机制 26. v8引擎执行js代码的过

    JavaScript-skills

    Constructor = [].shift.call(arguments); obj.__proto__ = Constructor.prototype; var ret = Constructor.apply(obj, arguments); return typeof ret === 'object' ? ret : obj; } 注意如果返回值是一个基本...

    重新理解JavaScript的六种继承方式

    call和apply方法为类式继承提供了支持。通过改变this的作用环境,使得子类本身具有父类的各种属性。 var father = function() { this.age = 52; this.say = function() { alert&#40;'hello i am '+ this.name ' and...

    Javascript数组操作高级心得整理

    (3) 继承方式2—call()方法与apply()方法 28  call()方法 28  apply()方法 28 (4) 继承方式3—原型链(prototype chaining) 29 (5) 继承方式4—混合方式 29 附:ECMAScript关键字与保留字 1. 关键字 30 2. 保留...

    article:记录并分享

    Node.js [Node.js 进阶系列] Koa 源码分析之 ...[实践系列]call,apply,bind 走一个 [实践系列]模拟实现 new 操作符 [实践系列]不要肆无忌惮地在你的项目中使用 ES78910 了~ [实践系列]「nodejs + docker + github

    JavaScript完全自学宝典 源代码

    2.16.html apply方法与call方法的使用。 第3章(\c03) 示例描述:学习JavaScript的高级语法。 3.1.html 连接字符串。 3.2.html indexOf()函数与lastIndexOf()函数。 3.3.html 截取字符串的子串。 ...

Global site tag (gtag.js) - Google Analytics