各位老铁们,大家好,今天由我来为大家分享揭秘2:探索背后的秘密与故事,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
var 学生={
name: "zs",
年龄: 16,
class: "一分钟掌握JS"
}
//一个班有N个学生。从字面上看,需要创建N 个学生对象。
//Issue : 创建多个同类型对象时,出现大量代码冗余(duplicate code)
//Value : 只需使用内置构造函数创建一些简单的对象
系统内置构造函数: 对象|数组|数学|日期|功能|字符串|数量|布尔值
var Stu=new Object();
Stu.name="zs";
学生年龄=16;
Stu.class="一分钟掌握JS";
//和字面方法类似,问题都是一样的——创建对象的相同部分进行函数封装(简单工厂) 简单工厂方法: 和函数封装类似,相同的不变,不同的传过去作为参数
函数人(){
var Stu=new Object();
Stu.name="zs";
学生年龄=16;
Stu.class="一分钟掌握JS";
//返回对象
返回斯图;
}
var Stu1=人();
var Stu2=人();
//第:题两个学生的信息是一样的
//优化如下:不同的信息作为参数传入。
函数person(姓名、年龄、班级){
var Stu=new Object();
Stu.name=姓名;
学生年龄=年龄;
Stu.class=类;
返回斯图;
}
函数狗(姓名,年龄,班级){
var 狗=new Object();
狗.name=名字;
狗.age=年龄;
狗.class=类;
返回狗;
}
var Stu3=person("zs", 16, "一分钟掌握JS" );
vardog=dog("wangCai", 5, "骑自行车");
console.log(stu3==狗); //错误的
//Issue : 创建不同类型的对象时,无法区分类型。自定义构造函数——参考上一章使用构造函数创建对象
定义
自定义构造函数(首字母大写)——通过this设置属性/方法——使用new调用构造函数创建对象执行过程
通过new关键字调用构造函数。构造函数默认创建一个新对象,并将新对象分配给this。通过this设置属性和方法,默认返回新创建的对象返回值。
如果没有显示return,则默认返回构造函数内新创建的对象。如果写返回值则根据具体情况而定。如果返回的是值类型数据,则直接忽略。如果内部新创建的对象返回的是引用类型数据,则直接返回。此数据(将覆盖内部新创建的对象)自定义构造函数(与简单工厂函数不同)
函数名的第一个字母大写。默认情况下,将在自定义构造函数内创建一个对象。默认情况下,该对象将被分配给this。默认情况下,将返回新创建的对象。创建不同类型的对象时,可以区分它们的类型。
构造函数注意事项
函数传递值: 函数作为参数传递到构造函数中以确定对象的类型。 Object instanceof constructor : 确定指定对象是否由某个构造函数创建。获取对象类型: 构造函数属性obj.constructor 构造函数调用- 与函数调用不同new 关键字: 默认创建/返回对象
构造函数:对该对象进行一些初始化操作(将创建的对象赋值给this,并通过this绑定属性/方法)
函数人(姓名){
//这=对象;
控制台.log(这个);
this.name=名称;
//返回对象;
}
var p1=new Person("zs");
//构造函数也是一个函数
var p2=Person("ls"); //可以这样写,但不推荐这样写。
控制台.log(p2); //未定义,直接调用构造函数,this指向window
//分析打印结果
构造函数的原型对象
原型对象定义
当创建构造函数时,系统会默认创建一个与该构造函数关联的对象。这个对象称为构造函数的原型对象。
构造函数的原型对象的作用
对于使用构造函数创建的对象,默认情况下可以使用构造函数原型对象的属性和方法来访问原型对象: constructor.prototype
设置原型对象: constructor.prototype.name="name1";
原型对象本质上也是一个对象。您可以利用对象的动态特性来设置原型对象约定。
对象构造函数的原型对象构造函数的原型对象|对象的原型对象(prototype)
实例与实例化
实例: 构造函数创建的对象。一般来说, XX 是构造函数的instance实例成员: Instance属性+Instance方法实例化: 通过构造函数创建对象的过程。请注意,实例对象可以访问实例成员和原型成员,但不能访问静态成员。访问静态方法时,内部this指向构造函数本身,无法访问实例对象的成员函数Person(){
this.name="张三"; //实例属性
变量年龄=18; //私有变量
this.showName=function () { //实例方法
console.log(this.name);
}
this.showAge=function () { //特权方法
控制台.log(年龄);
}
}
Person.prototype.show=function () { //原型方法
console.log(this.name);
}
Person.des=function () { //静态方法
console.log(this.name);
}
var p1=new Person();
p1.showName(); //张三
p1.showAge(); //18
p1.show(); //张三
//p1.des(); //不明确的?错误(Y)
Person.des(); //不明确的?错误?张三?人(Y)
原型的使用方法
利用物体的动态特性来设定原型物体。提供构造函数来设置原型对象的成员(原型属性+原型方法)。添加成员: 构造Function.prototype.name="name1";修改成员: Constructor .prototype.name="name2";删除成员:delete Constructor.prototype.name;替换原型对象: 替换原型对象之前,将自己定义的对象赋值给原型对象创建的对象的原型对象和替换后创建的对象不是同一个对象* 注意点:获取替换原型对象的属性是不等于替换前原型对象的属性值。
【揭秘2:探索背后的秘密与故事】相关文章:
用户评论
“2” 这个数字真简单易懂啊!
有19位网友表示赞同!
感觉“2”代表着一种平衡的状态。
有17位网友表示赞同!
两个人的事情总比一个人好玩的多。
有5位网友表示赞同!
"2"这个数字,寓意着双倍的幸福吧? 。
有5位网友表示赞同!
我喜欢用“2”做符号,比如 “2-gether“ 。
有9位网友表示赞同!
看电影的时候,选座位一定要坐2号位置!
有7位网友表示赞同!
小狗一吃两条肉肠肯定很开心呀!
有20位网友表示赞同!
数学里,“2”是最基本的整数之一,好有趣。
有16位网友表示赞同!
"2" 的罗马数字是 "II" ,很好记啊。
有13位网友表示赞同!
我生日是在10月2号。
有14位网友表示赞同!
“2”也是代表着两个选择,挺自由的。
有17位网友表示赞同!
每次玩游戏遇到NPC都给2个选项 。
有6位网友表示赞同!
"2" 这个数字在宇宙中占什么样的比例呢?
有10位网友表示赞同!
“2” 加一,就变成三了。
有16位网友表示赞同!
喜欢吃两份包子,感觉更饱。
有9位网友表示赞同!