面向对象/继承/冒充

笔记
1:e1.preventDefault();这是组织浏览器的默认行为产生。
2:function(e1) 函数里加上e ,防止时间冒泡出现,冒泡就是时间影响其他地方的事件。
3:num=e.keyCode; num= e此时键盘按下的数值。
4: e.clientX x坐标 。
5:属性是否只存在对象中 用 对象.hasOwnProperty("属性")

6:构造函数的 原型 用 prototype
对象用 proto

7:Array 中 新增一个方法x,可以压入一个元素

Array.prototype.x1=function(a){

this.push(a)

}
8:console.log(dog instanceof Dog) 判断dog是不是Dog的对象(实例)

9:document.body.offsetHeight
document.body.offsetWidth获取此时屏幕的 宽 长。

10:构造函数都存在1个隐藏的对象 原型对象 prototype
11:获取当前滚动条的位置
var iScrollTop = document.documentElement.scrollTop || document.body.scrollTop;

12://仅用 Dogkj.prototype= new Dog();不能传参数 否则后面新建全是这个参数;

13:冒充只能冒充 函数里面的属性,写在外面的行为不能冒充

14: 游戏引擎,因为只有一个,用 字面量的形式会更好;

var gGameBox = {
    
    rows: 20,  // 行数
    
    cols: 20,  // 列数

    allTds: [], // 存储所有的td元素对象
    
    // 方法: 游戏开始
    start: function() {

        gGameBox.init(); // 游戏初始化
        
    },
    
    // 初始化
    init: function() {
        // 场景布置好, 用表格来做
        var oTable = document.createElement("table");
    
        for (var i = 0; i < gGameBox.rows; i++)
        {
            // 创建tr
            var oTr = document.createElement("tr"); 

            // 每一行,定义1个空数组
            var arr = [];

            for (var j = 0; j < gGameBox.cols; j++) {
                // 创建td
                var oTd = document.createElement("td"); 

                oTr.appendChild(oTd);

                // 将td放到空数组中
                arr.push(oTd);
            }
            // 将当前行所有的td,压入到 allTds 属性中
            gGameBox.allTds.push(arr);

            oTable.appendChild(oTr);
        }

        // 添加到body
        document.body.appendChild(oTable);
    }



};

面向对象写 鼠标拖动的物体:
1:先获取物体

var oImg = document.getElementById("box")

2:鼠标按下 开始运行函数oImg.onmousedown= function(e1){
因为鼠标拖动后物体移动是的点在 物体的左上角,所以要算一下:(1)鼠标到物体边缘的长度
var dateX = e1.clientX -oImg.offsetLeft;
(2)鼠标放在物体里开始移动,物体的左上角与鼠标的差值,var x = e2.clientX -dateX ;
(3)把鼠标所在的left top 赋值给物体的left top:oImg.style.left= x+"px"
oImg.style.top= y+"px"
(4)鼠标抬起事件,不让物体移动:oImg.onmouseup=function(){
window.onmousemove=null;D
}
整个函数就是

var oImg = document.getElementById("22")

    oImg.onmousedown= function(e1){
        e1.preventDefault();
        var dateX = e1.clientX -oImg.offsetLeft;
        var dateY = e1.clientY -oImg.offsetTop;
        console.log(e1.clientX+","+oImg.offsetLeft+"</br>")
        window.onmousemove=function(e2){
            var x = e2.clientX -dateX ;
            var y = e2.clientY -dateY ;
            console.log(e2.clientX+","+dateX)
        oImg.style.left= x+"px"
        oImg.style.top= y+"px"
        }
        //图片顶点左边  按照这个移动
    }
    oImg.onmouseup=function(){
        window.onmousemove=null;D
    }

面向对象方法
1:先找到对象 function Box(){
this.ele=document.getElementById("a22")
}
2:设置属相 之前要保留this,为了和后面程序混淆,不知this 所指。
var state=this;
3:对象的行为-(1) 鼠标按下事件

this.ele.onmousedown=function(e){
        e.preventDefault();

        state.dateX=e.clientX-state.ele.offsetLeft;
        state.dateY=e.clientY-state.ele.offsetTop;

        state.star();

        document.onmouseup=function(){
            state.stop();
        }
    }

15:

鼠标按下后- 组织浏览器默认行为-计算小差值-调用开始-鼠标抬起停止;
(2)开始行为

this.star=function(e){
        document.onmousemove=function(e){
        var x = e.clientX - state.dateX;
        var y = e.clientY - state.dateY;
            state.move(x,y);
        }
    }

计算鼠标移入物体移动的差值-并且调用移动
(3)移动 计算的数值赋值给物体

this.move=function(x,y){
        state.ele.style.left=x+"px"
        state.ele.style.top=y+"px"
    }

(4)停止行为
this.stop=function(){
document.onmousemove=null
}
4:调用对象 var a=new Box();
a.move(40,50);
可以直接设置物体的初始位置。

总结: 面向对象一环套一环。因为时间是连续的。
可以 继承 并且修改继承。

继承 /冒充
function A(){
B.call(this,参数)
}
这段程序是A 要继承B的属性 ,this 不能省略,this 后面 的参数是继承的第一个参数。
A.prototype = new B(); A要继承B的行为,还可以继承后再修改。
A.prototype.move=function(x,y){
B.prototype.move.call(this,x,y)
this.ele.innerHTML=x+","+y;
}
A继承B的move行为的(x,y)
并且继承过来后修改了move.
new A();调用A;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,063评论 1 10
  • 今天呢?有一些小插曲,我说你贱,你心里本想的真的生气一回,不理我了,但却没有做到,宝宝,这就是一份感情的积累啊,...
    佳颖永远在一起阅读 106评论 0 0
  • 一切都是慢慢过来的,却足够老了 当足够老了 由困惑变坦然 从含苞,等到风雪 分身无数,嬉笑怒骂或沉默寡言 渐渐懂得...
    jomo17阅读 113评论 0 0
  • App 元数据将以 App Store 数据包格式交付给 App Store。App Store 数据包是指包含描...
    i_Leechee阅读 11,955评论 1 6
  • 某天,排队等午饭的闲聊中,一个同事给我讲了这样一个故事。二战的一场战役中,英国(就当是英国吧,这不是重点)的战斗机...
    乱红N阅读 177评论 0 1