[javascript]构造函数学习笔记

function StructFunc(msg){

//特权属性(共有属性)

this.msg = msg; //只有实例化后才能调用

this.address = "阳泉";

//私有属性

var names = "itdong";

var age = "itdong";

var that = this;

//私有方法

function sayName(){

alert(that.names);

}

//特权方法 (共有方法)

this.sayAge = function(){

alert(age); //在共有方法可以访问私有成员

}

}

//共有方法 适用于通过new关键词实例化的该对象的每个实例

//向prototype中添加成员将会将新方法添加到构造函数的底层

StructFunc.prototype.sayHello = function(){

alert("hello world !");

}

//静态属性就是最为Function对象实例函数的构造函数本身

StructFunc.names = "zhao";

//静态方法

StructFunc.alertName = function(){

alert(this.names)

}

//实例化

var zhao = new StructFunc('hello');

/*** 测试属性 ***/

console.log(StructFunc.names) //通过39行代码给构造函数本身赋值了“zhao”

console.log(zhao.names) //undefined 静态属性不适用一般属性

console.log(zhao.constructor.names) //想访问类的静态属性,先访问该实例的构造函数,然后在访问该类的静态属性

console.log(StructFunc.address) //undefined StructFunc中的this指针指的不是函数本身,而是调用address的对象,而且只能的对象

console.log(zhao.address) //this指针指的是实例化后的m1

/*** 测试方法 ***/

StructFunc.alertName() //直接调用函数的静态方法

// zhao.alertName() //undefined is not a function 和类没关系

zhao.constructor.alertName() //调用对象构造函数的方法

zhao.sayHello() //StructFunc 下的prototype原型下的方法将会呗类阶乘

// StructFunc.sayHello(); //原型方法不是类方法

/*** 测试prototype ***/

console.log(zhao.prototype) //undefined 实力没有prototype

console.log(StructFunc.prototype)

alert(StructFunc.prototype.constructor)

console.log(StructFunc.prototype.constructor.names)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容