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上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺 ...
随机推荐
- iPhone CSS media query(媒体查询)
iPhone5 iPhone6 iPhone6Plus iPad设备 media query(媒体查询)代码. iPhone < 5: @media screen and (device-a ...
- MVC中权限管理
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少.权限管理几乎出现在任何系统里面,只要有用户和密码的系统.权限管理还是比较复杂的,有的固定到某个模 ...
- TP框架 ---空控制器和空操作
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...
- form表单编码方式设置为multipart/form-data,后台参数出现乱码情况
一般在上传图片过程中,form中的编码方式一般采用multipart/form-data方式编码,但是后台这取参数时,可能会出现乱码情况:这里后台要采用转换编码方式: 页面: 后台:获取表单元素时,
- appframework3.0(JQmobi)入门教程
2015-03-31 22:02 2011人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. appframework3.0好像是3月24日发布的,今天31号,发现和 ...
- IOS在线安装App
在越狱设备上可以安装,如果设备不越狱也想安装,就要企业发布权限了,可惜我没有,所以不能测试了! 1.创建ipa及plist文件: XCode菜单栏->Product->Archive-&g ...
- html标签分两种:块状元素和内联元素
块状元素一般是其它元素的容器,可以容纳内联元素和其它块状元素,独占一行,宽度和高度起作用.如div,p等标签属于块状元素. 内联元素只能容纳文本和其它内联元素,可与其它内联元素位于同一行, ...
- The connection to adb is down,and a server error has occured.解决办法---------------------亲测有效
认真读error: 办法一: 点击项目右键->Android tools ->Fix Project Properties,检查项目属性 办法二: 设备管理器,查看是否存在adb进程 如果 ...
- ubuntu配置tftp服务
ubuntu配置TFTP服务: TFTP是用来下载远程文件的最简单的网络协议,基于UDP协议.xinetd是新一代的网络守护进程服务程序,经常用于管理多种轻量型internet服务. sudo apt ...
- Eclipse安装svn插件的几种方式
Eclipse安装svn插件的几种方式 1.在线安装: (1).点击 Help --> Install New Software... (2).在弹出的窗口中点击add按钮,输入Name(任意) ...