面向对象

面向对象:
对象:女朋友 猫 ,电视()
万物皆对象
var oDate=new Date();
oDate.getTime();
面向对象:只管用,就行。不用关心内部实现
var arr=[];
arr.push(1);
对象:
1.用对象
2.写对象 $$$
对象怎么构成:
1.属性
变量
变量,是自由的;属性,有所属者mmm
2.方法
函数
------------------------------------
this:当前发生事件
当前方法属于谁,this就是谁
*默认全局属于window
*js本身就有很多bug
作者就自己承认
布莱登·艾克 java
----------------------------------
js
试着更改一些bug
严格模式:
'use strict'
严格模式的好处:
1.修复了局部函数this的问题
2.不允许在if/for等里面定义函数
3.干掉了with(公用代码){}
4.定义变量必须加var
作用域范围:
1.最大不超出script标签
2.可以放在函数里面
3.放在文件里面
*在以后写代码的时候都要加上


造对象:造人
属性:物体特征
方法:物体行为


内置系统对象:(不要用系统的内置对象)
Date();
arr
reg
json


js中造一个空白对象:
var obj=new Object();
首字母大写的函数统称:构造函数
*为了和普通函数做一个区分


工厂模式:
原料->加工->出厂


*new都干了什么
1.帮咱们创建了一个空白对象,并且赋值给了this
2.加了new 之后,系统自动帮你返回return

*new后面跟的都是函数(构造函数)
.red{background-color:red;}






原型:
prototype
给一类添加东西
原型用处:扩展系统方法

面向对象:
1.构造函数里面添加属性
2.方法添加到原型上


面向对象的称呼:
类(构造函数) 构造对象相当是个模子
对象(实例):new 构造函数 有实际功能,模子产出东西


面向对象的特征:
封装
{

*继承

多态

继承:遗传  子级可以继承父级

******任何东西都是对象 Object

检测一个对象的具体类型:
instanceof
:自己,自己的父级,自己的父级的父级......
现在就想找它自己的亲爹:
constructor: 构造器/构造函数
只检测父级


js中诡异的事情:
去看诡异事情的例子


基本数据类型:
字符串
数字
布尔
fn
//obj
undefined
var a=1;
包装类:(java借鉴过来的)
var a=new Number(5);


面向对象里面把this搞明白,基本就会了
this:
this的优先级:(多包一层失效)
new->object
定时器->window
事件->事件对象
方法->当前对象
其他

继承:
子级继承父级功能
给父级添加一个功能,子级默认就有
function CreatePerson()
function Person()
function Worker()
fn W(){
this.name=''
this.age=''
this.job=''
}


继承:
属性:
改变this指向:
.call(this指向,参数1,参数1···);
.apply:跟call的功能一样
.apply(this指向,[参数1,参数1···]);
//arguments代表所有的实参参数
.apply(this指向,arguments);
方法:
1.子级.prototype=父级.prototype;
2.for(var name in Person.prototype){
循环复制
}
3.Worker.prototype=new Person();
Worker.prototype.constructor=Worker;
继承:
1.属性
父级的构造函数.apply(this,arguments);
2.方法
子级的构造函数.prototype=new 父级构造();
子级的构造函数.prototype.constructor= 子级构造;


特称:
封装:抽
继承:子类可以继承父类的所有东西
多态:js里面没有意义
类:构造函数
对象(实例):有真正功能
强制改变this:
.call
.apply
属性:
父类.call(this,cs1,cs2);
父类.apply(this,arguments);
方法:
子类.prototype=new 父类();
子类.prototype.constructor=子类;


变量名冲突:
1.封闭空间()()
(function(){})();自执行匿名函数、闭包
(function(){}())
~function(){}()
2.模块化
3.面向对象
4.命名空间
规划整个网站
公用函数
var BaiduWeb={
pc:{
pub:{}//公用函数
Effect:{}//各种效果
},
mobile:{}
};

你可能感兴趣的:(面向对象)