- 运用继承减少内存和时间消耗。
- var ob=s ||"unknow";相当于默认值
- var ob= s && s.img 防止出现s.img无值导致的typerror,结果为undefine
- 对象永远不能被复制,而是被引用
- typedef flight.number //'number',但是在原型链中任何属性都会是'function'或者 用 object 具有带指定名称的属性,则 hasOwnProperty 方法返回 true,否则返回 false。 此方法不会检查对象原型链中的属性;该属性必须是对象本身的一个成员。
- 函数会自动生成两个参数this和arguments。arguments没有任何方法,因为是类数组的对象,有length属性
- 方法调用,可以通过this来获取对象的上下文,通过this来取得对象上下文的方法称为public method
- 函数调用add(3,4),通过这种调用this指向window,所以若有内外函数时,用this赋给var that,来传递this指针
- 构造函数调用,通过new 的形式,约定以大写字母开头。返回this指针
- Apply调用,javascript是函数式面向对象,函数可以有方法,apply就是函数的方法,第一个参数选择this,第二个参数是传的参。如:add.apply(null,[3,4]);//为7,传参以数组形式
- 可以在object.prototype.method,Number,String,Function等的prototype来添加原型的方法来扩充功能,为了不与其他类库冲突,应该先检测。
- 闭包例子,因为内函数会获得外函数里的变量,所以不会出现复制变量
var add_the_handlers=function(nodes){var helper = function (i){return function (e) {alert(i);}};var i;for ( i = 0 ; i < nodes.length ; i+=1) {nodes[i].onclick = helper(i);}};就是每一onclick个产生一个新函数.
String.prototype.deentityify= function(){
var entity = {
quot : '"',
lt:'<',
qt:'>'
};
return function(){
return this.replace(/&([^&;]+);/g,
function(a,b){
var r= entity[b];
return typeof r==='string'?r:a;
}
);
}
}();
- 继承
- 传参的时候,以function({first:"ss",second:"12"});更易阅读
- 可以通过在函数中定义一个对象,来保证私有,一个特权对象来操作,返回这个特权对象
- 6种值会为假(==false),分别是false,null,undefined,' ',0,NaN
- number类型总是64位浮点数,两个整数相除也可能出现非整数结果
- 通用递归记忆函数,加入一个记忆参数,可以减少递归函数的调用次数,显著提高效率
var memoizer = function (memo,fundamental) {var shell = function (n) {var result = memo[n];if(typeof result !== 'number') {result = fundamental(shell,n);memo[n] = result;}return result;};return shell;};调用:var fibonacci = memoizer([0,1],function(shell,n){return shell(n-1)+shell(n-2);});console.log(fibonacci(10));
- 是否数组检测
var is_array = function (value) {return value &&typeof value === 'object' &&typeof value.length === 'number' &&typeof value.splice === 'function' &&!(value.propertyIsEnumerable('length'));};
- 运用继承减少内存和时间消耗。
- var ob=s ||"unknow";相当于默认值
- var ob= s && s.img 防止出现s.img无值导致的typerror,结果为undefine
- 对象永远不能被复制,而是被引用
- typedef flight.number //'number',但是在原型链中任何属性都会是'function'或者 用 object 具有带指定名称的属性,则 hasOwnProperty 方法返回 true,否则返回 false。 此方法不会检查对象原型链中的属性;该属性必须是对象本身的一个成员。
- 函数会自动生成两个参数this和arguments。arguments没有任何方法,因为是类数组的对象,有length属性
- 方法调用,可以通过this来获取对象的上下文,通过this来取得对象上下文的方法称为public method
- 函数调用add(3,4),通过这种调用this指向window,所以若有内外函数时,用this赋给var that,来传递this指针
- 构造函数调用,通过new 的形式,约定以大写字母开头。返回this指针
- Apply调用,javascript是函数式面向对象,函数可以有方法,apply就是函数的方法,第一个参数选择this,第二个参数是传的参。如:add.apply(null,[3,4]);//为7,传参以数组形式
- 可以在object.prototype.method,Number,String,Function等的prototype来添加原型的方法来扩充功能,为了不与其他类库冲突,应该先检测。
- 闭包例子,因为内函数会获得外函数里的变量,所以不会出现复制变量
var add_the_handlers=function(nodes){var helper = function (i){return function (e) {alert(i);}};var i;for ( i = 0 ; i < nodes.length ; i+=1) {nodes[i].onclick = helper(i);}};就是每一onclick个产生一个新函数.
String.prototype.deentityify= function(){
var entity = {
quot : '"',
lt:'<',
qt:'>'
};
return function(){
return this.replace(/&([^&;]+);/g,
function(a,b){
var r= entity[b];
return typeof r==='string'?r:a;
}
);
}
}();
- 继承
- 传参的时候,以function({first:"ss",second:"12"});更易阅读
- 可以通过在函数中定义一个对象,来保证私有,一个特权对象来操作,返回这个特权对象
- 6种值会为假(==false),分别是false,null,undefined,' ',0,NaN
- number类型总是64位浮点数,两个整数相除也可能出现非整数结果
- 通用递归记忆函数,加入一个记忆参数,可以减少递归函数的调用次数,显著提高效率
var memoizer = function (memo,fundamental) {var shell = function (n) {var result = memo[n];if(typeof result !== 'number') {result = fundamental(shell,n);memo[n] = result;}return result;};return shell;};调用:var fibonacci = memoizer([0,1],function(shell,n){return shell(n-1)+shell(n-2);});console.log(fibonacci(10));
- 是否数组检测
var is_array = function (value) {return value &&typeof value === 'object' &&typeof value.length === 'number' &&typeof value.splice === 'function' &&!(value.propertyIsEnumerable('length'));};