JavaScript:构造函数

构造函数

  • 在构造函数本身上添加的成员是静态成员,只能由构造函数本身来访问()

  • 构造函数内部创建的对象成员称为实例成员,只能由实例化的对象来访问(new 来访问)

构造函数原型 prototype

构造函数原型是构造函数的属性,这个属性是一个对象,也称prototype为原型对象

Star.prototype 是一个对象

作用:是为了共享方法,从而达到节省内存空间的目的

注意:每一个函数都有prototype属性

//构造函数里放属性
function Star(uname,age){
    this.uname = uname;
    this.age = age;
}
Star.prototype.sing = function(){
    console.log(this.uname+'在唱歌')
}
var ldh = new Star("刘德华"22);
//原型对象里放方法

为什么实例对象能用到原型对象上的方法? 因为每个对象都有__proto__

对象原型:proto

主要作用:指向prototype

对象原型:是对象的一个属性,每一个实例对象都有一个对象原型(proto

实例对象的–proto–和构造函数的prototype等价

统一称呼:–proto-- 原型 prototype原型对象

constructor 构造函数

constructor是一个属性,原型对象的属性

主要作用:指回构造函数本身 (就不会迷路了)

//属性
function Star(uname,age){
    this.uname = uname;
    this.age = age;
}
//方法
Star.prototype = {
    constructor: Star,
    chang:function(){...},
    tiao:function(){...},
	rap:function(){...},
}

原型链

由原型串起来的一个链

作用:提供一个成员的查找机制,或者查找规则

继承

ES5之前:没有extends继承。 通过构造函数+原型对象模拟实现继承(组合继承)

普通函数里的this指向window

call() 构造函数和原型对象

调用这个函数,并且修改函数运行时的this指向

继承属性:调用父类函数,用call改变this指向

function Father (uname,age){
    this.uname = uname;
    this.age = age;
}
//new Father();
//让Son继承Father
function Son (uname,age,score){
    //.call改变Fatger构造函数的this的指向
    Father.call(this,uname,age);//继承用call,第一个参数用this改变指向,后面继续+继承的属性名
    this.score = score;//添加子函数特有的属性
}
var obj = new Son('儿子',13,99)

继承方法: new一个父类的实例对象,把它赋值给子类的原型对象;在用构造函数constructor指回子类的构造函数本身

function Father(){属性:}
Father.prototype.chang = function(){
    console.log("唱歌");
}
function Son (){}
Son.prototype = new Father();
Son.prototype.tiao = function(){
    console.log('跳舞')}
var obj = new Son();
obj.chang();
 console.log(Son.prototype);
 console.log(Father.prototype);

forEach遍历数组

var arr = ['red','blue','yellow','pink'];
//遍历数组
arr.forEach(function(elm,i,arrAbc)){
            console.log(elm,i,arrAbc);
            }

arr.filter筛选 返回新数组

var arr = [123,5464,13,56,94,47];
var result=arr.filter(function(val,index,obj){//var为每一项内容;index为索引;obj为arr本身,可以不写
    return val >100;//返回一个新数组,内容为arr中大于100的数
})
var result=arr.filter(function(val,index,obj){
    return val%2==0;//返回一个新数组,内容为arr中的偶数
})

some()

array.some(function(currentValue,index,arr))//查找数组中的元素,找到满足条件立刻停止

some()方法用于检测数组中的元素是否满足指定条件,通俗点查找数组中是否有满足条件的元素

注意返回的是布尔值,如果查找到,就返回true,如果找不到就返回false.

currentValue为数组当前项的值 index 索引,arr数组本身 可不写

var arr = [123,5464,13,56,94,47];
var result=arr.some(function(currentValue,index,arr){
    return val ==123;// 有满足条件,返回一个布尔值 true,循环立刻停止
})//依靠于return 的值  如果让他return false  就会一直循环

总结:

创建对象:字面量,构造函数,自定义构造函数

new的执行:创建一个新对象,this指向这个对象,执行函数,返回这个对象

成员:静态成员:只能由构造函数来访问

​ 实例成员:只能由实例化对象来访问

原型对象:构造函数的一个属性,prototype,【共享方法】

对象原型:__proto__对象的一个属性, 指向原型对象

constructor: 原型对象的属性,指回构造函数本身

原型链:提供了一个查找成员的机制,方向

继承:es6之前没有extends和super

es5:组合继承:构造函数和原型对象

​ 属性:调用父类构造函数执行,用call改变this的指向

​ 方法:把父类的实例对象赋值给子类的原型对象,用constructor指回子类构造函数本身

数组方法:forEach ,filter,some

es6之后才引进了堆和栈的说法,js还没有普及堆和栈的说法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值