构造函数的本质还是为了生成一个对象
let obj ={
name:"yang",
age:"19"
}
obj.tel=100
obj['set'] ='男'
console.log(obj.name);
console.log(obj.age);
for(let key in obj) {
// console.log(key)
console.log(obj[key])
}
console.log(obj)
delete obj.tel
console.log(obj)
let obj3 = {
name: 'zhangsan',
age: 12
}
let obj2 = new Object({
name: 'zhangsan'
})
function fn() {
var num = 1
return num
}
let a = fn()
console.log(a)
任何一个函数在声明的时候都会伴生一个对象prototype 他就是函数的原型 原型中有一个constructor函数这个就是构造器
构造器指向构造函数本身 实例化对象中有一个对象叫__proto__他指向构造函数的原型
new的作用 1.调用了函数 2.将函数内部的this指向实例化对象 3.在this上挂在对应的数据和方法 4.返回这个对象
function Person(name, age) { // 因为构造函数内部的this是指向实例化对象的 所以她不能用箭头函数声明
我们使用实例化对象上面的属性和方法时会先在对像本身来找如果找不到就想对象的原型中去找如果还找不到就去原型的原型上去找直到找到活着报错为止 这个过程就叫原型链
// console.log(this)
this.name = name
this.age = age
}
let person = new Person('羊羊', 1)
let person2 = new Person('杨', 1)
console.log(person)
console.log(person2)
console.log(person.__proto__ === Person.prototype)
console.log(Person.prototype.constructor === Person)
function IceDd(name, color) {
this.name = name
this.color = color
}
IceDd.prototype.say = function() {
console.log('hello 我叫' + this.name)
}
let bdd = new IceDd('杨', 'gold')
console.log(bdd)
bdd.say()
function Game(name, type) {
this.name = name
this.type = type
}
Game.prototype.ani = function() {
console.log('播放开场动画')
}
function Role(name, sex, hit) {
this.roleName = name
this.sex = sex
this.hit = hit
}
Role.prototype = new Game('王者荣耀','手游')
Role.prototype.constructor = Role
Role.prototype.roleSay = function() {
console.log('我叫' + this.roleName)
}
let role = new Role('安琪啦(平时我很听话)', '女', '18')
console.log(role)
role.roleSay()
role.ani()