---实例属性,方法 & 静态属性,静态方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    function Pig(name){
        this.name=name//实例属性
        this.sayHi=function(){
            console.log(this.name);
            
        }
    }
    const peiqi=new Pig('佩奇')
    const qiaozhi =new Pig('乔治')
    peiqi.name='小猪佩奇'
    // 实例方法是通过 this 定义在构造函数中的方法,属于每一个具体的实例。
     peiqi.sayHi=()=>{//实例方法
        console.log('hi');
        
    }//在peiqi的实例上重新定义, 覆盖了原来构造函数中的sayHi方法 
   peiqi.sayHi()

   //静态成员只能通过构造函数来访问 
   //静态方法中的this指向构造函数
   //比如Date.now
   Pig.species="animal"//静态属性
   console.log(Pig.species);
   
   Pig.describes=function(){//静态方法
    console.log("All pigs are animals");  
   }
   Pig.describes()
   peiqi.describes()//报错:peiqi.describes is not a function
   

</script>

总结

1.实例成员(属性和方法)写在谁身上?
实例对象的属性和方法即为实例成员
实例对象相互独立,实例成员当前实例对象使用
2.静态成员(属性和方法)写在谁身上?
构造函数的属性和方法被称为静态成员
静态成员只能构造函数访问

你可能感兴趣的:(javascript,javascript,前端,开发语言)