javascript 基础

1. 赋值

var o = anything ||  ' anythig is undefined';   // o 首先会取值 anything, 但如果anything 未定义, 则会取值 'anything is undefined'.

var o = anything && 'anything is not undefined';   //o 首先会取值 'anything is not undefined', 但如果 anything 未定义或空或null,则会取值 anything.

2. 对象字面量

var martin = {}; 

  // martin 不尽是个对象字面量,而且可以作为管理全局变量的命名空间,

  // 如我们经常这样使用全局变量 var name = 'hello'; var age = 18; 不好管理,现在可以用martin 装起来 martin = {name:'hello',age:18}

3. 作用域

function myfunction(){

  this.myname='belong to caller';  // 属性只属于this的绑定者

  alert(myname); //undefined

  var myname='belong to function'; // 变量在js中,其作用域是function级别的,没有块级

  alert(myname); // belong to function

}

myfunction();  //这样 window是caller, window 拥有 myname

var o= {};

o.toMe=myfunction;

o.toMe(); //这样 o是 caller, o 拥有 myname

 4. 变量

内部函数可以访问外部函数的参数和变量,但不能访问其中的 this(如果是以函数形式调用,则可以访问) 和 arguments(有length属性,

可通过arguments[...]获取对象,但它不是数组对象,没有数组其它方法.)

function externalFunc (a,b){

  this.e = 5;

  var d = 4;

  //此时 arguments.length = 3

    function internalFunc(){

      alert(a); // 1

      alert(b); // 2

      alert(d); // 4

      alert(this.e); // 若externalFunc以 externalFunc(1,2,3) 调用,则为 5

                                    // 若以 var o ={}; o.callExt=externalFunc; o.callExt(1,2,3) 调用,则为 undefined,

              // 如果需要访问,则可以在其外部中定义一个变量来装载this,如我们常见的 var self=this;或var that=this; ,这样 alert(that.e);  // 5

      alert(arguments[2]); // undefined , 此时只是自身的 arguments, 而非外部函数的 arguments

    }

    internalFunc();

    alert(arguments[2]); // 3

}

externalFunc(1,2,3);

 5. 封装、继承、多态

 //封装
function Person(name){
    this.name= name;
};
Person.prototype.getInfo = function(){
    return "My name is " + this.name;
};


function Student(name){
    this.name=name;
}
//继承
Student.prototype = new Person();

//重写
Student.prototype.getInfo = function(){
    return "My name is " + this.name
            + " and I am a student.";
};

function Teacher(name){
    this.name=name;
}

//继承
Teacher.prototype = new Person();

//重写
Teacher.prototype.getInfo = function(){
    return "My name is " + this.name
            + " and I have 40 students.";
};

//多态
var persons=[new Student("apple"), new Teacher("mao")];

for (var i=0;i<persons.length;i++){
     
    alert(persons[i].getInfo());
}

 6. 闭包:它本身是一个函数,而这个函数又引用了其上下文的环境变量

 7. 扩展 jquery

红色字体部分可取值: $.fn 是针对对象的方法扩展;$ 是针对jQuery的扩展方法

格式:

$.extend(boolean,dest,src1,src2...)// true(为默认值): src2 对 src1 深度复制;false:则 src2 对 src1 不深度复制;

$.extend(dest,src1,src2...) //dest 可以取值:{}, $或jQuery, $.fn

$.extend($.fn,{

  extendName:function(){

      var self=this,

      $someProperty=$('something');

      init=function(){

        //todo something

      };

      someMethod:function(){

        //todo something

      };

      init();

    }

});

这样使用扩展方法:

$('div').extendName();

如果是红色部分是$不是$.fn,则这样使用

$.extendName();

应用例子

获取cookie:

function getCookie(sName) {
            var sCookies = document.cookie ;
            if ("string" == typeof(sName)) {
                var sRE = "(?:; )?"+sName+"=([^;]*);?" ;
                var reRE = new RegExp(sRE) ;
                if (reRE.test(sCookies)) {
                    return decodeURIComponent(RegExp["$1"]) ;
                } else {
                    return null ;
                }
            } else {
                return sCookies ;
            }
        }
重定向

function redirect(){

var userAgent = navigator.userAgent;
        if(userAgent){
            userAgent = userAgent.toUpperCase();
            var mobilePhoneList = ["PAD","IOS","IPHONE","ANDROID","WINDOWS PHONE"];
            for(var i=0,len=mobilePhoneList.length;i<len;i++){
                if(userAgent.indexOf(mobilePhoneList[i])>-1){
                                    
                        window.location.href = "url";
                    }
             }
         }
}
View Code 

。。。。。

原文地址:https://www.cnblogs.com/yipeng-yu/p/3236646.html