js构造函数

1 经典实例,涵盖全局变量,局部变量,变量声明提升,对象,上下文,闭包等知识
   var num = 4;
       var obj = {
          num: 6,
          fn:(function() {
              this.num *= 2; //window.num*=2
              num = num *2; //变量声明提升    NaN
             
              var num = 4; //num = 4
              return function() {      //fn:function() {.... }
                 this.num *= 2;  
                 num*=3;
                 alert(num);
              }
          })()
       }; 


       var fn = obj.fn;       // window.num=8  num=NaN  num=4  fn=function(){}
       alert(num);            //返回的是window.num=8;
       fn();                  // this-->window  window.num=8*2=16  num=4*3=12   弹出num = 12
       obj.fn();              //this--->obj  obj.num=12  num=12*3=36
       alert(window.num);     //16
       alert(obj.num);        //12 
       
2 new()
*调用函数的方式
1 圆括号直接调用 
    2 定时器调用
    3 事件处理函数
    4 对象打点调用
    5 数组枚举调用
*new()实例:
function fn() {
console.log(this);  // fn {}
this.name = "张小龙";
this.age = 30;
this.sex = "男";
}
var obj = new fn();  //new的作用,调用函数,返回一个名为fn的对象
console.log(obj);    //fn {name: "张小龙", age: 30, sex: "男"}

new()内部执行机制:
1 在真正执行函数体之前,函数内部先默认创建一个局部变量,是一个fn{} 空对象
2 让函数内部this指向该空对象 this ===fn {} 
        3 执行函数体
        4 函数体全部执行完毕,函数会返回该对象(返回函数上下文)
        
    *构造函数
    function Student(name,sex,age) {
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.hobby = ["学习","运动","尊师爱友"];
            this.study = function() {
            alert("好好学习 天天向上");
            }
    }
    //函数名首字母大写,以区别普通函数
var xiaoli = new Student("小丽","女",23);
    var xiaohong = new Student("小红","女",18);
    var xiaowei = new Student("小伟","男",24);
    
*构造函数操作DOM
//动态添加img便签
function CreatImg(tag,src){
this.tag = tag;
this.dom = document.createElement(this.tag);
this.dom.src = src;
document.body.appendChild(this.dom);
}
var img = new CreatImg("img","1.jpg");

*构造函数注意事项
构造函数有默认返回值,当在函数内添加return语句时
1 如果返回的是基本类型,如null,undefined,NaN,number,string,boolean时,忽略return语句,返回对象
2 如果返回的是对象,如DOM元素,[],{},RepExxp,function,Math() 等,执行返回语句,不返回默认对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值