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

mac2022-06-30  59

一.创建对象

<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 = XXX3.隐式的返回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

 

转载于:https://www.cnblogs.com/nice2018/p/9789299.html

最新回复(0)