构造函数及其包装类

对象

  • 对象的创建方法
    1.var obj = {} plainobject 对象字面量/对象直接量
    2.构造函数
    1)系统自带的构造函数 Object()
    2)自定义
    var obj = new object();执行一次生产一个对象 而
    且每次生产的对象都是一模一样的 但是且相互独
    立的
    var obj = {};与上面的表达式一样
  • 大驼峰命名规则 但凡是个单词 首字母就得大写
    TheFirstName 小驼峰是就首字母不用大写 剩下

都得大写

function Car(color) {
        this.color = color;
        this.name = "BMW";
        this.height = "1400";
        this.lang =  "4900";
        this.weight = 1000;
        this.health = 100;
        this.run = function () {
          this.health --;
        }
 }
var  car = new  Car('red');通过参数来改变函数 发
生自定义环节
 var  car1 = new Car('green');
 car.name = "Maserati";
 car1.name = " Merz";两个name互不影响
function Student (name,age,sex){
      //var this = {name : ""   age:"" };
     this.name = name;
     this.age = age;
     this.sex = sex;
     this.grade = 2017;
      //return this;
  }
 var  student = new Student ('zhangsan',  18,  'male');
console.log(new Student ('zhangsan',  18,  'male').name);
  • 构造函数内部原理
    1.在函数体最前面隐式的加上this = {}
    2.执行 this.xxx = xxx;
    3.隐式的返回this
    只有存在new的情况下才会发生以上三步,否则就是正常函数执行

    //包装类
    var num = 4 ;
    num.len = 3;
    //new Number(4).len = 3; delete
    //
    //new Number(4).len
    console.log(num.len);=>underfined

    var str = "abcd";
    str.length = 2;
    //new String('abcd').length = 2; delete
    //new String('abcd').length
    console.log(str.length)=>4
    原始值是不能操作属性的 但是str本身就有length这个属性 而num没有length这个属性

    var str = "abc";
    str += 1;
    var test = typeof(str);//test == "string"
    if(test.length == 6) {
    test.sign = "typeof的返回结果可能为String“;
    }//new String(test).sign = 'xxx';
    //new String(test).sign
    console.log(test.sign);=>underfined
  • 包装类的一些问题
var str = "abc";
/new String('abc').length
console.log(str.length)    ->3
正常来讲原始值str是没有属性的,但是程序为了
不报错,隐式的进行了一个操作,于是构造了一个
字符串对象的构造函数new String( ),然后将内
容‘abc’放在里面,把这个对象进行 . length操作,这
个过程就是包装类(主要是原始值没有属性和方
法,但是生成得对象可以有属性)
var num = 123;
num.abc  =  “abc”
/new Number(num).abc  =  'abc';    ->delete(为了
不让它报错 执行完就删除了)
/两个长得一样,彼此独立,上面那个已经被销毁
了,下面那个是重新建立得
/new Number(num).abc 
console.log(num.abc)    ->underfined

你可能感兴趣的:(构造函数及其包装类)