prototype的方式:prototype 属性是啥意思呢? prototype 即为原型,每一个对象 ( 由 function 定义出来 ) 都有一个默认的原型属性,该属性是个对象类型。并且该默认属性用来实现链的向上攀查。意思就是说,如果某个对象的属性不存在,那么将通过prototype属性所属对象来查找这个属性。如果 prototype 查找不到呢?js会自动地找prototype的prototype属性所属对象来查找,这样就通过prototype一直往上索引攀查,直到查找到了该属性或...
js中有三种继承方式1.js原型(prototype)实现继承<SPAN style="BACKGROUND-COLOR: #ffffff"><SPAN style="FONT-SIZE: 18px"><html> <body> <script type="text/javascript"> function Person(name,age){ this.name=name; this.age=age; } Person.prototype.sayHello=function(){ alert("使用原型得到Name:"+this.name); } var per=new Person("小倩",21); per.sayHello(); //输出:使用原型得到Name:小倩 function...
js中call和apply都可以实现继承,唯一的一点参数不同,func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])。JS手册中对call的解释:<SPAN style="FONT-SIZE: 18px">call 方法 调用一个对象的一个方法,以另一个对象替换当前对象。 call([thisObj[,arg1[, arg2[, [,.argN]]]]])参数 thisObj 可选项。将被用作当前对象的对象。 arg1, arg2, , argN 可选项。将被传递方法参数序列。 说...
Function.prototype.call() 函数实例的call方法,可以指定该函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。并且会立即执行该函数。 看个例子来好好理解这段话。上面代码中,a函数中的this关键字,如果指向全局对象,返回结果为456。可以看到,如果call方法没有参数,或者参数为null或undefined或者this,则等同于指向全局对象。如果使用call方法将this关键字指向keith对象,也就是将该函...
遍历DOM我们可以写个函数,用来遍历DOMfunction walkDOM(n) { do { alert(n); if (n.hasChildNodes()) { walkDOM(n.firstChild) } } while (n = n.nextSibling) } walkDOM(document.body);//测试修改节点下面来看看DOM节点的修改。先获取要改变的节点。非常容易更改这个元素的属性。我们可以更改innerHTML.因为innerHTML可以写入html,所以我们来修改html。em标签已经成为dom树的一部分了。我们可以测试一下my.firstChild;//<em...
创建节点为了创建一个新的节点,可以使用createElement和createTextNode.如果新建完成,可以用appendChild()把节点添加到DOM树中。创建一个元素P,并把设置innerHTML属性var myp = document.createElement(p); myp.innerHTML = yet another;元素P建完成了,就可以随意修改添加属性了 接下来可以用appendChild把新的节点添加到DOM树中的。使用DOM的方法用innerHTML方法的确很简单,我们可以用纯的dom方法来实现上面的功能。新建一个...
fun.apply(context,[argsArray])立即调用fun,同时将fun函数原来的this指向传入的新context对象,实现同一个方法在不同对象上重复使用。context:传入的对象,替代fun函数原来的this;argsArray:一个数组或者类数组对象,其中的数组参数会被展开作为单独的实参传给 fun 函数,需要注意参数的顺序。fun.call(context,[arg1],[arg2],[…])同apply,只是参数列表不同,call的参数需要分开一个一个传入。如果不知道参数个数,则使用appl...
apply 和 call 的区别ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已。apply( )apply 方法传入两个参数:一个是作为函数上下文的对象,另外一个是作为函数参数所组成的数组。var obj = {name : linxin } function func(firstName, lastName){console.log(firstName + + this.name + + lastName); } func.apply(obj, [A, B]); // A linxin ...
1) 使用!!将变量转换成布尔类型有时,我们需要检查一些变量是否存在,或者它是否具有有效值,从而将它们的值视为true。对于做这样的检查,你可以使用||(双重否定运算符),它能自动将任何类型的数据转换为布尔值,只有这些变量才会返回false:0,null,"",undefined或NaN,其他的都返回true。我们来看看这个简单的例子:function Account(cash) { this.cash = cash; this.hasMoney = !!cash; } var account = new Account(100....
call/apply/bind方法的来源首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法?call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法。上面代码中,都返回了true,表明三种方法都是继承自Function.prototype的。当然,普通的对象,函数,数组都继承了Function.prototype对象中的三个方法,所以这三个方法都可以在对象,数组,函数中使用。绑...
Ajax请求jquery ajax函数封装了一个ajax的函数,代码如下:var Ajax = function(url, type success, error) { $.ajax({ url: url, type: type, dataType: json, timeout: 10000, success: function(d) { var data = d.data; success && success(data); }, error: function(e) { error && error(e); } }); }; // 使用方法: Ajax(/data.json, get, function(data) { console.log(data); });jsonp方式有时候我们为了跨域,要使用json...
for循环写法对效率的影响总的来说对于for循环的写法有这么两种:不写声明变量的写法:for(var i = 0;i<arr.length;i++){}写声明变量的写法:for(var i = 0,len = arr.length;i < len;i++){}除了for循环还有forEach() ,也有文章说forEach()效率最高,推荐用forEach()写法,那么到底哪个效率高呢?做个测试来看看吧。测试方案总的测试方案如下:做一个容纳4千万的测试数组变量。分别用两种写法的for循环和foreach对这个测试变量进行...
for循环我们在js遍历对象或数组时都会有用到了,一起来看一些关于for循环的一些使用例子了,具体的操作细节如下文介绍。一般写法如下:这就是一个常见的,正序循环的for循环。这样写的缺点大家都明白:每次都从arr里取length与i来对比,浪费性能(而且,要是arr的长度是动态变化的,就会出现死循环)。改进这个循环的办法是用变量保存arr.length:这样比第一种可以略微提升点性能,要是数组长,可以提升更多。不过这样写就多了个变...
break和continue之间的区别for(var i=0;i<10;i++){if(i>5){break;} } console.log(i); ---6 ?当i=5和10的时候,会执行到break,并退出循环 for(var i=1;i<10;i++){if(i>5){continue;}num++; } console.log(num); ---4var num=0; for(var i=1;i<10;i++){if(i%5==0){continue;}num++; } console.log(num); ---8 ?当i=5或者i=10的时候,会按照i的值,继续执行for循环,并退出循环当执行多重循环的时候break的情况outer: for(var i=0...
1.语法及返回方式①返回控制与函数结果 语法为:return 表达式; 语句结果函数的执行,返回调用函数,而且把表达式的值作为函数结果返回出去②返回控制无函数结果 语法为:return; 在大多数情况下,为事件处理函数如果让其返回false,可以防止默认的事件行为.例如,默认情况下,点击一个<a>标签元素,页面会跳转到该元素href属性指定的页. 而return false就相当于终止符,return true就相当于执行符. 在js中retur...