内置的对象
window对象,是js中最顶级的对象,其他的BOM属性都是window对象的属性。
document(文档对象)
location(浏览器当前URL信息)
navigator(浏览器本身信息)
screen(客户端屏幕的信息)
history(浏览器访问的历史信息)
如何自定义对象
1.内置的构造函数
var Person= new Object();
Person="xiaoqiao";
Person.age=18;
2.使用对象字面量表示法
var person={}
var person={name:"xiaoqiao",age:"18"}
工厂模式
function createpreson(name,age){var x=new Object();x.name=name;x.age=age;x.hover=function(){alert("王者荣耀")} return x;}
var qiao=createpreson('qiao',18); alert(qiao.name)
构造函数创建对象
function person(name,age)
{this.name=name;this.age=age;this.hover=function(){alert("王者荣耀");}}
var person1=new person('qiao',18); var person2=new person('wang',28)
原型对象 .prototype在JavaScript中一切皆对象。(比如函数本身也是对象)
function url(){url.prototype.name='小猫' url.prototype.eat=function(){alert("吃鱼")}}
url1=new url();
url1.eat();
构造函数模式+原型模式(较为完美的构造)
1.构造函数模式用于封装属性。
2.原型模式封装共享方法。
function person(name,age,job){this.name=name;this.age=age;this.job=job;}
person.prototype={constructor:perason,(指向person)sayName:function(){alert(this.name)}(吧整个原型对象改了)}
动态原型模式
functoin persion(name,age,job){this.name=name;this.age=age;this.job=job;if(typeofrhis.sayName!="function"){person.prototype.sayName=function(){alert(this.name)}}}
原型对象里一定有一个构造函数
function stu(name,age,job){this.name=name;this.age=age;this.job=job;}stu.prototype.sayName=function(){alert(this.name)}
var zs=new stu("zahngsan",18,"IT") console.log(zs) console.log(stu.protootype)
js中所有对象都有自己的原型对象 原型对象又有自己的原型对象 一直延续到最顶端Object.prototype
所有对象中都有__proto__构造函数中都有constructor
函数的proto都指向function.prototype
function.prototype指向object.prototype
面试题
var a=function(){}
a.prototype.n=1;
var b=new a();
a.prototype={
n:3,
m:4
}
var c=new a();
console.log(b.n,b.m,c.n,c.m)
var F=function(){}
Object.prototype.a=function(){
console.log("a()")
}
Function.prototype.b=function(){
console.log("b()")
}
var f=new F()
f.a()//a()
f.b()//找不到
F.a()//a()
F.b()//b()
function A(){}
function b(a){
this.a=a
}
function c(a){
if(a){
this.a=a
}
}
A.prototype.a=1
b.prototype.a=1
c.prototype.a=1
console.log((new A()).a)
console.log((new b()).a)
console.log((new c(2)).a)