实例添加
this.名称
<script>
this.name=name
</script>
静态方法添加
函数.名称
原型添加方式
<script>
star.prototype.myFunc=function(){
console.log(1111);
}
</script>
<script>
l.myFunc();
l.__proto__.myFunc(); //获取,都可以打印1111
</script>
<script>
Object.prototype.someFunc=function(){
console.log(1111);
}
let obj={};
let obj=function(){};
Obj.someFunc(); //函数,对象,数组都可以用
</script>
静态方法
<script>
star.sex="男"
var l=new Star("名",18);
console.log(l);
console.log(l.__proto__.constructor.sex); //获取
</script>
constructor获取静态方法存储的值
<script>
Star.prototype.constructor.ids=99
</script>
原型链
obj.hasOwnProperty检测当前是否有对象
<script>
let obj = {
name:"zs",
age:18,
each:{
a:1,
b:2
}
}
console.log(obj.hasOwnProperty("a"));
</script>
Star原型对象里面的 proto 原型指向的是 Object.prototype
Object.prototype原型对象里的__proto__原型 指向null
查找机制
- 当访问一个对象的属性或方法时,首先查找这个对象自身有没有
- 如果没有就查找它的原型(也就是 proto 指向的prototype 原型对象 )
- 如果还没有找到就查找原型对象的原型(Object的原型对象)
- 依次类推一直找到Object为止( null )
- proto 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条线路
判断方法
Object.is(值1,值2) , ! , if , 三目运算符 , switch(){case} 与(===基本类似)
typeof 检测数据类型,返回基本数据类型
constructor:内部原型属性,可以通过代码重写,还可以用于判断某一种类型
<script>
var a=[1,2,3];
console.log(a constructor()); // 输出[]
</script>
instanceof:JavaScript操作符, 会在原型链中的构造器中搜索,找到则返回true,否则返回false(只作用于对象或数组)
<script>
var a=[1,2,3];
var arr1=new Array();
console.log(a instanceof Array); // instanceof判断a是否是Array
</script>