一. 起因 那天用到prototype.js于是打开看看,才看几行就满头雾水,原因是对js的面向对象不是很熟悉,于是百度+google了一把,最后终于算小有收获,写此纪念一下^_^. prototype.js代码片段 代码如下:var Class = {     create: function() {         return function() {             this.initialize.apply(this , arguments);         }     } …
var Class = { create:function() { return function() { this.initialize.apply(this, arguments); }; } } var Tool = Class.create(); Tool.prototype = { initialize: function($container){ ; }, getVal:function(){ return this.val; }, setVal:function(_val){ th…
一个小练习: 用一个 函数来代替console.log()的功能 function log(a){ console.log.apply(null,arguments);//arguments 是传的实参 ,apply正好可以配合类数组传参数 } log(1,2,3):…
function Person(name){ this.name=name; this.sayname=function (){ alert(this.name); } } function Student(name){ Person.apply(this,arguments); } var xiaoming=new Student("小明"); xiaoming.sayname(); 这是javascript里的吧,是将函数的属性与方法进行拷贝,主要是实现类的继承. 引用: http…
我们在写代码的时候,时常会被this弄的傻傻分不清楚,看源码的时候也经常被call啊apply啊弄的头皮发麻.this到底是什么?本文主要根据书上和实际应用做了一些归纳.一般情况下this有4种绑定规则: 1.默认绑定 - this指向全局变量 举例: function baz(){ console.log('a',this.a); }; var a = 2; baz(); // a 2 在非严格模式下,我们调用了baz,它没有被任何对象包裹,而是暴露在全局环境中,因此此时它被调用的上下文就是全…
a.call和apply方法详解 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,ar…
首先,有个单例对象,它上面挂了很多静态工具方法.其中有一个是each,用来遍历数组或对象. var nativeForEach = [].forEach var nativeMap = [].map var util = { each: function (obj, iterator, context) { if (obj == null) return if (nativeForEach && obj.forEach === nativeForEach) { obj.forEach(it…
函数调用方法 在谈论JavaScript中apply.call和bind这三兄弟之前,我想先说下,函数的调用方式有哪些: 作为函数 作为方法 作为构造函数 通过它们的call()和apply()方法间接调用 前面的三种调用方法,我们都知道且不在这篇文章的讨论范围内,就不说了. 下面我们来说说这第四种调用方法 通过call()和apply()间接调用 其实,我们可以将这两个函数看做是某个对象的方法,通过调用方法的方式来间接调用函数: function f(){} f.call(o); f.appl…
关于这3个货,网上有很多文章介绍,我这边还是记录下并加上自己的理解,还有arguments函数内置对象顺便也记录下: 简单的说apply和call 会绑定第一个参数的作用域给调用函数对象实例,并会执行调用函数,还可以传参数 apply 第二个参数是数组,call 是可变长度参数 apply.call: 例子来个: function x(t,v){ console.log(this.id); if(t){ console.log(t); } if(v){ console.log(v); } } v…
这是我在公众号(高级前端进阶)看到的文章,现在做笔记  https://github.com/yygmind/blog/issues/22 call() 和 apply() call() 方法调用一个函数, 其具有一个指定的 this 值和分别地提供的参数(参数的列表). call() 和 apply()的区别在于,call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组 举个例子: var func = function(arg1, arg2) { ...…