body {background-color: #c3c3c3}

js总结 (3)对象的创建方法,构造函数,包装类等

一.创建对象

<script>
// 使用Object创建对象
// var car = new Object();
// car.name = 'merz'
// car.color = 'red';

// 对象字面量创建对象

// var car = {
// name :"BMW",
// color :"blue"
// };

// 局限性:当需要创建n个同类重复对象时,需要重复代码n次。


// 工厂模式

function Car(color) {

this.name="Audi";
this.age=3;
this.color=color;
this.health=function () {
console.log(this.age);
this.age--;
return; 
}

} 
var car1= new Car("red");
car1.age=5;

 有new发生的隐式三步变换

1.在函数体最前面隐式的加上this ={}
2.执行this.XXX = XXX
3.隐式的返回this

二.构造函数

 包装类 基本原始值

1.Number()

2.String()  默认有length属性而且不可赋值

3.Boolean()

重点:原始值没自定义有属性和方法 不能给原始值赋值(赋值也不会报错)

<script> 
    var num = 4;
    num.len = 3;   // 违法语句 用包装类类解
            //new number(4).len=3; delete
            //系统自动生成一个newNumber(4)(现在不为原始值所以可以赋值)再为其赋属性值len,操作完以上步骤随即销毁。

console.log(num.len);// 访问 undefined
               
</script>

<script type = "text/javascript"> 
    var str = "abc";
    str += 1;
    var test = typeof(str);  //test = "string"
    if(test.length == 6) {
        test.sign = "typeof的返回结果可能为string";   //因为前面有test = "string",所以现在是string类型
        //new String(test).sign = 'xxx';     
   }
   //new String(test).sign   销毁
    console.log(test.sign);
</script>

//undefined

 

不同的人调用工厂的函数 他们一开始是一样的后面的改变 互不相干 比如下面

<script type = "text/javascript"> 
    function Person(name,age,sex) {   
        var a = 0;
        this.name = name;
        this.age = age;
        this.sex = sex;
        function sss () {
            a++;
            console.log(a);
        }
        this.say = sss;
    }
    var oPerson = new Person();
    oPerson.say();
    oPerson.say();
    var oPerson1 = new Person();
    oPerson1.say();
</script>
//1 2 1

 

posted @ 2018-10-15 09:30  最美胡萝卜  阅读(204)  评论(0编辑  收藏  举报
body {background-color: #c3c3c3}