this作用域、javascript面向…
来源:互联网 发布:淘宝流程 编辑:程序博客网 时间:2024/05/16 07:57
原文地址:this作用域、javascript面向对象作者:loveflying
此过程模拟了javascript操作符new对象的过程。
var name = "zjx";
var say = function (){
alert(this.name);
this.eat = function(){
alert("eat");
}
}
this.say();
this.eat();
alert("====================");
var user1 = {
name : "zff",
say: this.say
}
user1.say();
user1.eat();
alert("====================");
var user2 = {
name : "cm",
say :this.say
}
user2.say();
user2.eat();
alert("====================");
alert(user1.say == user2.say);
alert(user1.eat == user2.eat);
输出:
zjx
eat
====================
zff
eat
====================
cm
eat
====================
True
False
上面代码还夹杂了this的作用域问题,只针对new过程的代码如下:
var say = function (){
this.name="zjx";
this.eat = function(){
alert("eat");
}
}
var user1 = {
say: this.say
}
user1.say();
var user2 = {
say :this.say
}
user2.say();
alert(user1.say == user2.say);
alert(user1.eat == user2.eat);
输出:
True
False
总结代码如下:
User = function(){
this.name = "zjx";
this.say = function(){
alert("i am " +this.name);
}
}
var user1 = new User();
user1.say();
这两段代码和下面的三行代码是完全等价的:
var user2 = User.prototype;
user2.constructor();
user2.say();
变相代码:
var user2 = User.prototype;
user2.another = User;
user2.another();
user2.say();
可以说,javascript是基于原型的,每个函数都有对应的原型对象。
1、new操作符就是先赋值于原型对象。
(
A:后台会把构造函数赋给原型对象的某一个属性X,具体名称开需考究。
B:设置constructor属性:当自定义了原型对象比如为{X:x2,Y:x3}时,constructor设置为Object,新增方法、属性或不设置原型对象时指向构造函数。
)
2、然后再把执行原型对象的X方法。
var name = "zjx";
var say = function (){
}
this.say();
this.eat();
alert("====================");
var user1 = {
}
user1.say();
user1.eat();
alert("====================");
var user2 = {
}
user2.say();
user2.eat();
alert("====================");
alert(user1.say == user2.say);
alert(user1.eat == user2.eat);
输出:
zjx
eat
====================
zff
eat
====================
cm
eat
====================
True
False
上面代码还夹杂了this的作用域问题,只针对new过程的代码如下:
var say = function (){
}
var user1 = {
}
user1.say();
var user2 = {
}
user2.say();
alert(user1.say == user2.say);
alert(user1.eat == user2.eat);
输出:
True
False
总结代码如下:
User = function(){
}
var user1 = new User();
user1.say();
这两段代码和下面的三行代码是完全等价的:
var user2 = User.prototype;
user2.constructor();
user2.say();
变相代码:
var user2 = User.prototype;
user2.another = User;
user2.another();
user2.say();
可以说,javascript是基于原型的,每个函数都有对应的原型对象。
1、new操作符就是先赋值于原型对象。
(
A:后台会把构造函数赋给原型对象的某一个属性X,具体名称开需考究。
B:设置constructor属性:当自定义了原型对象比如为{X:x2,Y:x3}时,constructor设置为Object,新增方法、属性或不设置原型对象时指向构造函数。
)
2、然后再把执行原型对象的X方法。
0 0
- this作用域、javascript面向…
- javaScript中的this作用域
- JavaScript(面向对象+原型理解+继承+作用域链和闭包+this使用总结)
- Javascript 作用域与this的用法
- Javascript This.作用域.闭包
- javascript中作用域与关键字this
- JavaScript中的作用域以及this变量
- JavaScript中的作用域以及this变量
- javascript作用域及this关键字
- javascript 变量、作用域、命名空间、this
- JavaScript闭包作用域与this
- javascript 之this及作用域整理
- JavaScript——this作用域问题
- javascript 中 this的作用域
- JavaScript 变量作用域、this、闭包
- javascript实现计数器理解this作用域
- javascript 作用域、this详解 待更新
- 丁小柒javascript进阶-this与作用域
- 猴子排队算法
- 猴子排队算法
- 谷歌地图添加文本标注
- 查询系统负载信息 Linux 命令详解
- 增强 SSH 安全性的 7 条技巧
- this作用域、javascript面向…
- 提高网页在IE和Firefox上的…
- 提高网页在IE和Firefox上的…
- 配置SSH终端服务RSA验证方式示例
- spss19.0中文版下载
- CentOS VSFTP采用RPM包安装方式
- FragmentActivity和Activity的区别
- mysql+php select 下拉…
- Android应用开发架构