你十八了吗

10.16笔记

bind,call,apply区别
bind:改变this值,不会立刻调用函数
元素节点.onclick=function(){
//this -> mydate
}.bind(mydate)

callee与caller的区别
arguments:当前函数的实参列表
arguments.callee:当前函数(使代码内容和方法名字分离)
arguments.callee.caller:
/*谁调用了当前函数(如果是全局函数,caller返回null)*/
《JavaScript高级编程》

定时器
不论是setTimeout还是setInterval都在异步队列中执行
不论等待时间写多少,都会等定时器以外的代码执行完了才执行

为什么要用setTimeout模拟setInterval? ☆
在开发环境下,很少使用setInterval,原因是后一个间歇调用很可能在前一个间歇调用结束前启动

闭包 ☆
闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量

闭包的缺点 ☆
常驻内存,会增大内存使用量,使用不当很容易造成内存泄露

闭包场景 ☆
for(var i=0;i<li.length;i++){
(function(index){
li[index].onclick=function(){
alert(index);
}
})(i)
}
例子

 


继承
语法:
Animal.apply(this,[type,color,sex]); 和父类.call(this,参数列表);
案例:
父类:Phone(品牌,价格,号码,打电话)
子类:Mobile Phone(发短信,上网,拍照,游戏),TelePhone(回拨,来电显示)
 
 

 

 
练习:根据属性名称和属性的值来查找元素
<input sex="男">
<button sex="女">M</button>
<div sex="女"></div>
自定义函数,找到所有sex是女的HTML标签,而且将该函数添加到document对象中
 
 

 

原型(prototype)与原型链
1. 我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个对象,它的用途是包含可以由特定类型的所有实例共享的属性和方法。
2. 原型与原型之间进行继承,形成了一个链条.

 


使用原型继承
//创建3个自定义类型(人类,老师,高中老师)
function Person(){this.name="jackie";}
function Teacher(){this.age=31;}
function HighSchoolTeacher(){}
//让老师继承人类
Teacher.prototype=new Person();
//让高中老师继承老师
HighSchoolTeacher.prototype=new Teacher();

原型模式的执行流程(就近原则)
1.先查找构造函数实例里的属性或方法,如果有,立刻返回
2.如果构造函数实例里没有,则去它的原型对象里找,如果有就返回

hasOwnPropertyx
对象.hasOwnProperty('属性名');
实例里有该属性返回true,否则返回false.可以用来过滤原型上的属性和方法
例子
 

 

 
补充:
数组去重
一.

二.

 

三.

 

posted on 2018-10-16 21:04  你十八了吗  阅读(87)  评论(0编辑  收藏  举报

导航