Web_java script基本使用D_面向对象(2)_创建函数四种方式(构造函数)

一,字面量创建

js对象是键值对集合

 var obj={1:1,2:2,
	方法名1:function(){},
	方法名2:function(){}
}

二,new 对象创建

new Object();O大写

var obj=new Object(); //创建一个空白对象
//         console.log(obj);
obj.name="小白";
obj.age=12;
obj.show=function () {
	console.log("秀儿同学");
}
obj.walk=function () {
	console.log("走猫步");            
}

以上两种方式创建对象的弊端:
1.每次创建一个对象 都要单独绑定属性跟方法 步骤很麻烦
2.这种造对象的方式 不可能大批量创建 所以我们需要一个工厂来造对象。

三,工厂函数造对象

优点

  1. 把对象绑定属性跟方法的过程 封装起来 反复调用;
  2. 那么代码的复用率很高 而且很方便的 重复大批量造对象;

缺点

  1. 创建出的对象类型很不明确
//工厂函数造对象
function createNewObj(name,age){
	var obj=new Object();
	obj.name=name;
	obj.age=age;
	obj.show=function () {
		console.log("请不要秀");
	}
	obj.walk=function () {
		console.log("朕要巡视了...");
	}
	return obj;
}
var newObj=createNewObj("小白",12);
console.log(newObj);
var newObj1=createNewObj("(●—●)",16);
console.log(newObj1);

//        批量造对象
for(var i=0;i<10;i++){
	var per=createNewObj("哈哈"+i,i+10)
	console.log(per);
}

构造函数创建对象

构造函数名必须大写,构造函数就是函数,只不过为了和普通函数分开

构造函数中this是什么?
this表示当前对象,谁new就指向谁

变量的驼峰命名规则
第一个首字母小写,随后的首字母大写。

new关键字的四个作用
构造函数之所以能够创建出对象 跟new关键字的作用密不可分。

  1. 开辟内存空间,存储新创建的对象;
  2. 将this指向当前对象;
  3. 执行内部代码,为当前对象绑定属性和方法;
  4. 返回新创建的对象。

构造函数和普通函数的区别:
构造函数和普通函数 调用方式不同:

  • 普通函数 : 函数名();
  • 构造函数 : new 函数名();
    我们如何知道该函数 是构造函数还是普通函数呢?
  • 就看函数名是否大写 所以要求我们 如果当前函数被我们定义为构造函数;
  • 那么函数名必须大写(虽然不大写也不报错 但是潜规则为了区分 一定要大写);

总结: 构造函数和普通函数 从函数定义上来看 没有任何区别;

但是 调用方式有区别。

  • 构造函数就用构造函数的模式调用 new;
  • 普通函数就用普通函数的调用模式 函数名()
//创建一个构造函数
function Person(name,age){
	this.name=name;
	this.age=age;
	this.show=function () {
		console.log("构造函数对象的show");
	}
	this.walk=function () {
		console.log("构造函数的走路方法");
	}
}
//    根据构造函数创建对象
var per=new Person("小白",12);
console.log(per);
var per1=new Person("小红",18);
console.log(per1);

控制台a在这里插入图片描述

//如果构造函数 用普通函数的调用方式去调用会怎么样?  无意义!!!!
var p= Person();
console.log(p);*/
function show() {
	console.log("我是show函数");
	//控制台:我是show函数
}
//如果普通函数使用了构造函数的调用方式 会怎么样?  没有对象诞生  但是会执行里面的代码
var s=new show();
console.log(s);

控制台打印s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值