理解整个系统需要额外掌握的知识
1、&& ||操作符号的使用
要看懂整个框架,需要明白&& ||操作符号,这2个操作符和传统语言不太一样。
a()&&b():
如果执行a()后返回true,则执行b()并返回b的值;
如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;
a()||b():
如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;
如果执行a()后返回false,则执行b()并返回b()的值;
&&优先级高于||
具体代码:
alert((1 && 3 || 0) && 4); //结果4①
alert(1 && 3 || 0 && 4); //结果3②
alert(0 && 3 || 1 && 4); //结果4③
分析:
语句①:1&&3返回3 => 3 || 0返回3 => 3&&4返回4
语句②:先执行1&&3返回3,在执行0&&4返回0,最后执行结果比较3||0返回3
语句③:先执行0&&3返回0,在执行1&&4返回4,最后执行结果比较0||4返回4
4返回4,最后执行结果比较0||4返回4
注:非0的整数都为true,undefined、null和空字符串””为false。
2、this,new操作符号的理解。
this的理解
调用形式 |
this指向 |
普通函数 |
全局对象window |
对象的方法 |
该对象 |
构造函数 |
新构造的对象 |
new的理解
创建一个新的对象,这个对象的类型是object;
设置这个新的对象的内部、可访问性和[[prototype]]属性为构造函数(指prototype.construtor所指向的构造函数)中设置的;
执行构造函数,当this关键字被提及的时候,使用新创建的对象的属性;
返回新创建的对象(除非构造方法中返回的是‘无原型’)。
3、propotype的理解。
以上所讲的综合示例:
<script type="text/javascript">
//页面加载成功;
window.onload = function () {
var ck = new cangku(); //实例化创建一个仓库
ck.cun(10); //实例化成员对象在这里执行存货 this.sl = 1
ck.cl(); //实例化成员对象在这里执行查看库存alert(1)
ck.qu(5); //实例化成员对象在这里执行取货this.sl = 0;
ck.cl(); //实例化成员对象在这里执行查看库存alert(0);
cangku.apply(ck); //重载函数换老板给cangku重新赋值
}
var cangku = function () { //创建一个实例命名为cangku
this.sl = 0; //赋予此函数属性命名为sl
document.getElementById("kc").innerText = this.sl;
}
cangku.prototype = { //构造函数
cun: function (ch) { //存货
this.sl = this.sl + ch;
document.getElementById("kc").innerText = this.sl;
},
qu: function (qh) { //取货
this.sl = this.sl - qh;
document.getElementById("kc").innerText = this.sl;
},
cl: function () { //查看库存
alert(this.sl);
}
}
</script>
4、js回调的理解,js的精髓。
4.1.回调函数的作用
js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。
4.2回调函数的解释
因为函数实际上是一种对象,它可以存储在变量中,通过参数传递给另一个函数,在函数内部创建,从函数中返回结果值”,
因为函数是内置对象,我们可以将它作为参数传递给另一个函数,到函数中执行,甚至执行后将它返回,它一直被“专业的程序员”看作是一种难懂的技术。
回调函数的英文解释为:
`A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.`
翻译过来就是:
`回调函数是一个作为变量传递给另外一个函数的函数,它在主体函数执行完之后执行。`
function A有一个参数function B,function B会在function A执行完成之后被调用执行。