1,什么叫匿名函數,就是把名字用~!()等特別符號命名,並放在function最前面.執行時不用直接用()不用名稱。
function Test(){}
~function(){
}()
2,閉包理解:
函數調函數,返加函數
var test=function(){return function(){}}
3,arguments用法.函數調用時,發果找不到對應傳參。直接到到無參。arguments可以取到所有傳進參數。
function test(){
alert(arguments[0])
}
test("0001","0002")
4,聲明函數與函數表達式。聲明函數有優先,表達式則一定在執行之前。
alert(test());OK
function(test()){alert("OK")};
alert(test2()); 出錯
var test2=function(){alert("OK")};
5,Object對像帶屬性:Prototype,constructor,hasOwnProperty(property)
Person.prototype.printName=function(){
}
對所有對像生效。
person.share=0;自己屬性優先於prototype是共享.
6, prototype instanceof Array
typeof(obj)
=============================
jquery
$.fn.xx === Person.prototype.xx
jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
jQuery.min(2,3); // 2
jQuery.max(4,5); // 5
var result=$.extend({},{name:"Tom",age:21},{name:"Jerry",sex:"Boy"}) 合並去除重復。
result={name:"Jerry",age:21,sex:"Boy"}
合並深度.true深度合並。
var result=$.extend( true, {},
{ name: "John", location: {city: "Boston",county:"USA"} },
{ last: "Resig", location: {state: "MA",county:"China"} } );
$.fn.extend(tooltip) = $.prototype.extend(tooltip) = $.fn.tooltip
7,對像是引用關系。一個變個個變.
var a = {name: 'nswbmw 1'};
var b = a;
a.name="test2"
console.log(a.name);
console.log(b.name);
exports 是指向的 module.exports 的引用{}
exports.sayName = function() {
console.log(name);
}
module.exports = function(r) {
return r * r * Math.PI;
}
exports=function(r){} 出錯,因為
require() 返回的是 module.exports 而不是 exports
var circle=require('./circle.js');返回對像module.exports
circle.js:
exports.area = function (r) {
return PI * r * r;
};
exports.circumference = function (r) {
return 2 * PI * r;
};
module.exports = function(r) {
return r * r * Math.PI;
}
console.log(circle.area(4));
console.log(area(4));