分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

JS-构造函数2

发布时间:2023-09-06 02:19责任编辑:顾先生关键词:暂无标签
一.如何创建对象
?1.对象字面量
???var obj1={
???????name:"吻别",
???????singer:"张学友",
???????type:"流行"
???}
?2.构造函数
???var obj=new Object();
???obj.name="刘德华";
???obj.age=45;
???obj.hobby=function () {
???????console.log("唱歌");
???};
3.封装简单的工厂函数 ??(不推荐使用)
???function createSong(Name,Age){
???var o=new Object();
???o.name=Name;
???o.age=Age;
???o.hobby=function () {
???????console.log("让我唱首歌");
???};
???return o
???}
???var obj1=createSong("刘德华",45);
???var obj2=createSong("张学友",36);
???console.log(obj1.hobby());

4.自定义构造函数
???//构造函数是用来初始化对象 (给对象新增成员)
???//并且和new关键字同时出现
???//new是用来创建对象的
???//构造函数名首字母要大写 ?以示区分
???function Person() {
???????//默认隐含的操作,把刚用new新创建出的对象赋值给this
???????this.name="尼古拉斯";
???????this.age="36";
???????this.sayHello=function () {
???????????console.log("hello world");
???????}
???}
???var P=new Person();//new object()

?5.原型解决构造函数中的问题
???//构造函数 原型解决问题
???function Person(name,age,gender) {
???????this.name=name;
???????this.age=age;
???????this.gender=gender;
// ???????this.sayHello=function () {
// ???????????console.log("我叫"+this.name);
// ???????}//此处会导致代码的多次重复浪费,所以解决方法用原型
???}
???Person.prototype.sayHello=function () {
???????console.log("我叫"+this.name);
???}
???var p1=new Person("刘德华",18,"male"); //实例化
???var p2=new Person("张学友",16,"male");//实例化
???p1.sayHello();
???p2.sayHello();

?6.实例化
???实例化:通过构造函数创建对象的过程

?7.原型对象的使用方法
????//1.利用对象的动态特性给原型对象添加成员
???Person.prototype.sayHello=function () {
???????console.log("我叫"+this.name)
???};
???p=new Person("刘德华",18,"male");
???p.sayHello();

???//2.直接替换原型对象
???Person.prototype={
???????msg:"you are a good boy",
???????func:function () {
???????????console.log(this.msg);
???????}
???};
???p1=new Person("张学友",20,"male");
???//此处p1不能调用sayHello()方法,因为他是原型对象从新创建之后,创建出来的
???console.log(p1.msg);

???8.使用原型注意事项
???????1.使用对象访问属性的时候,如果在本身找不到就会去原型找
???????2.但是使用.语法赋值的时候并不会去原型中找
???????3.使用.语法赋值的时候,如果对象中不存在该属性时,就会给该对象新增该属性,而不会新增原型中的属性
???????4.如何在原型中的属性是引用类型属性,那么所有对象共用该属性,并且一个对象修改了该引用类型属性中
???????的成员,其他对象也都会受影响
???????5.一般情况下不会将属性放入到原型对象中去,一般情况下原型对象中只会放共享的方法

?//构造函数 ?通过constructor可以找到构造函数
???function Person(name,age,gender,car) {
???????this.name=name;
???????this.age=age;
???????this.gender=gender;
???????this.car=car;
???}
???var x={
???????brand:"byd"
???};
???var p1=new Person("张学友",12,"male",x);
???console.log(Person.prototype.constructor);
???var p2=new p1.constructor("刘德华",45,"male",x); //通过constructor可以找到构造函数
???console.log(p2.name)

JS-构造函数2

原文地址:https://www.cnblogs.com/knighterrant/p/9838062.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved