JS高级程序设计 笔记
function A() {
    this.a = "a";
}
function B() {
    this.b = "b";
}
B.prototype = new A();
var test = new B();
console.log(test instanceof A);    //true
console.log(test instanceof B);    //true
console.log(test instanceof Object);    //true
//test拥有A、B、Object任何一个构造器的属性和方法
function A() {
    this.a = "a";
}
A.prototype.b = "b";
console.log(A.prototype.hasOwnProperty("a"));                //false
console.log(A.prototype.hasOwnProperty("b"));                //true
console.log(A.prototype.hasOwnProperty("hasOwnProperty"));   //false
console.log('hasOwnProperty' in A);                            //true
function A(){
    this.prop = 'a';
}
function B(){
    this.prop = 'b';
    this.method = function(){
        console.log(this.prop);			//b
        delete this.prop;
        console.log(this.prop);			//a
	}
}
B.prototype = new A();
var test = new B();
test.method();
function A() {
    this.a = "a";
}
console.log(A.prototype.constructor === A);    //true
4.call和apply可以改变this的作用域
function A() {
    this.name = "a";
    this.method = function(){
        var arr = Array.prototype.slice.call(arguments);
        console.log(arr.join(' ') + " " + this.name);
    }
}
var a = new A();
var b = {
    name: "b"
};
a.method.call(b, '1', '2', '3');    //1,2,3 b
function A(name) {
    this.name = name;
    this.method = function(){
        console.log(this.name);
    }
}
function B() {
    A.call(this, "a");
}
var test = new B();
test.method();    // a
test.name = "b";
test.method();    // b
区别是appy用的是数组
function A(arg1, arg2) {
    this.method = function() {
        console.log(arg1, arg2);
    };
}
function B() {
    A.apply(this, ["1", "2"]);
}
var test = new B();
test.method();    // 1, 2
function A(name) {
    this.name = name;
}
A.prototype.method = function() {
    console.log(this.name);
}
function B(name) {
    A.call(this, name);
}
B.prototype = new A();
var t1 = new B("2");
t1.method();    //2
var t2 = new B("3");
t2.method();    //3
console.log(t1.method == t2.method);    //true
var x = 0;
var foo = {
x:1,
bar:{
x:2,
baz: function () {
console.log(this.x);
}
}
} foo.bar.baz(); // 2
var a = foo.bar.baz;
a(); //0
(foo.bar.baz = foo.bar.baz)() //0
foo = function(){
    this.myName = "Foo function.";
}
foo.prototype.sayHello = function(){
    console.log(this.myName);
}
foo.prototype.bar = function(){
    setTimeout(this.sayHello, 10);
}
var f = new foo;
f.bar();
var obj = {};
var p1;
var p2 = "a";
obj[p1] = 123;
obj[p2] = 456;
console.log(obj[p1]);              //123
console.log(obj.a === obj[p2]);    //true
JS高级程序设计 笔记的更多相关文章
- js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定
		
js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener( ...
 - JS高级程序设计--笔记
		
1.JS分三个部分:ECMAScript.DOM.BOM 1)ECMAScript:提供核心语言功能 2)DOM:提供访问和操作网页内容的方法和接口 3)BOM:提 ...
 - js高级程序设计 笔记 --- 错误处理、json和ajax
		
1,错误处理 1,try-catch语句 try{可能导致错误的代码} catch(error) {在错误发生时该怎么处理} error.message是所有浏览器都支持的属性. finally语句是 ...
 - js高级程序设计 笔记 --- 表单
		
一,基础知识 在html中,表单是form元素,而在js中,表单对应的是HTMLFormElement类型,继承自HTMLElement,其独特的属性和方法有(常见): action:接收请求的URL ...
 - js高级程序设计 笔记 --- DOM
		
DOM是针对HTML和XML文档的一个API.DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 1,节点层次 DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的 ...
 - js高级程序设计 笔记 --- 面向对象的程序设计
		
1,理解对象 通过对象字面量的方式,创建一个对象,为它添加属性和方法: var obj = { a: 1, b:2, sayA(){ console.log(this.a)}} 1,属性类型: 数据属 ...
 - js高级程序设计 笔记 --- 引用类型
		
一,变量和作用域 1, js变量可以保存两种类型,基本类型.引用类型和symbol类型,基本类型有5种:undefined.null.boolean.number.string,它们都有以下的特征 基 ...
 - JS高级程序设计笔记一
		
/*设置自定义属性*/ var div=document.querySelector("#div1"); div.setAttribute("title",&q ...
 - 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图
		
读书笔记 - js高级程序设计 - 第十三章 事件 canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺 ...
 
随机推荐
- Leetcode: Valid Word Square
			
Given a sequence of words, check whether it forms a valid word square. A sequence of words forms a v ...
 - scp 从远程拷贝文件不需要密码
			
执行这一句,弹出来要你输入密码,输入一次后,以后再 scp 远程机的文件 再也不需要密码了 ssh-copy-id myusername@8.8.8.8
 - 【转载】jQuery动画连续触发、滞后反复执行解决办法
			
转载: http://www.cnblogs.com/yuejin/archive/2012/12/18/2822595.html jQuery中slideUp .slideDown.animate等 ...
 - 论文阅读(Chenyi Chen——【ACCV2016】R-CNN for Small Object Detection)
			
Chenyi Chen--[ACCV2016]R-CNN for Small Object Detection 目录 作者和相关链接 方法概括 创新点和贡献 方法细节 实验结果 总结与收获点 参考文献 ...
 - python for mysql
			
# -*- coding: utf-8 -*- '''python coded by written in 2016/8/31 Used for get win os log for each win ...
 - Android USB Host与HID通讯
			
前端时间捣鼓一个HID的硬件, 需要和android通信, 网上搜索了一圈,收获不小. 比较好的文章是: Android USB Host与HID通讯 Android Service创建US ...
 - Oracle提示大全
			
Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行 ...
 - data([key],[value])
			
概述 在元素上存放或读取数据,返回jQuery对象. 当参数只有一个key的时候,为读取该jQuery对象对应DOM中存储的key对应的值,值得注意的是,如果浏览器支持HTML5,同样可以读取该DOM ...
 - Java数据结构之回溯算法的递归应用迷宫的路径问题
			
一.简介 回溯法的基本思想是:对一个包括有很多结点,每个结点有若干个搜索分支的问题,把原问题分解为对若干个子问题求解的算法.当搜索到某个结点.发现无法再继续搜索下去时,就让搜索过程回溯(即退回)到该结 ...
 - python_函数
			
一.map 遍历序列,对序列中每个元素进行操作,最终获取新的序列 li = [11,22,33,44] new_list = map(lambda a: a + 100,li) print(new_l ...