JavaScript-this、工厂化创建对象

JavaScript-this、工厂化创建对象,第1张

文章目录 THISthis补充 工厂化创建对象普通方法创建对象工厂化方法创建对象

THIS 解析器在调用函数每次都会向函数内部传递进一个隐含的参数,thisthis指向一个对象,这个对象被称为:函数执行的上下文对象,根据函数的调用方式不同,this会指向不同的对象

测试

function fun(){
	console.log(this)
}
// 以函数形式调用
fun() // [object window]

var obj = {
	name : '溏心蛋',
	sayName : fun
}

console.log(obj.sayName == fun) // true
// 以方法形式调用
obj.sayName() // [object{ name='溏心蛋',sayName=fun()}]
以函数形式调用时,this永远都是window以方法形式调用时,this就是调用方法的那个对象 this补充
// 创建一个name变量
var name = '全局'
// 创建一个fun函数
function fun(){
	console.log(name)
}
// 创建两个对象
var obj = {
	name : '溏心蛋',
	sayName : fun
}
var obj2 = {
	name : '小鹿'
	sayName  : fun
}

fun() // 全局
// 条用obj.sayName()时可以输出obj的名字
obj.sayName() // 全局
// 将fun()函数中的name换成this.name
// function fun(){
//     console.log(this.name)
// }
fun() // 全局
obj.sayName() // 溏心蛋
obj2.sayName() // 小鹿
工厂化创建对象 普通方法创建对象

普通的创建对象方法:

var obj1 = {
	name : 'txd',
	age : 18,
	gender : '男'
}

var obj2 = {
	name : 'xl',
	age : 18,
	gender : '男'
}

太繁琐

工厂化方法创建对象 使用工厂方法创建对象可以大批量创建对象
function createPerson(name , age , gender){
	// 创建一个新的对象
	var obj = new Object();
	// 想对象中添加对象
	obj.name = name
	obj.name = age
	obj.gender = gender
	obj.sayName = function(){
		alert(this.name)
	}
	// 将新的对象返回
	return obj;
}
createPerson('txd',18,'男')
createPerson('xl',18,'男')

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/945391.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-18
下一篇2022-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存