js高级知识——面向对象

内置的对象

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值