js面向对象的写法
本文了JavaScript面向对象编程的四种常见写法,包括工厂模式、正规写法、JSON写法和变化写法。也介绍了关于this的相关内容。接下来,让我们一起来了解一下这些写法和this的用法。
一、工厂模式
工厂模式是一种创建对象的模式,可以通过函数来创建对象并返回。在工厂模式中,可以使用this关键字来定义对象的属性和方法。例如:
```javascript
var Circle = function() {
var obj = new Object();
obj.PI = 3.14159;
obj.area = function(r) {
return this.PI r r;
}
return obj;
}
var c = new Circle();
alert(c.area(1.0));
```
二、正规写法
正规写法是面向对象编程中比较常用的一种写法。在正规写法中,可以使用构造函数来创建对象,并使用原型来定义对象的方法。例如:
```javascript
function Circle(r) {
this.r = r;
}
Circle.PI = 3.14159;
Circle.prototype.area = function() {
return Circle.PI this.r this.r;
}
var c = new Circle(1.0);
alert(c.area());
```
三、JSON写法
JSON写法是一种简洁的面向对象编程方式。在JSON写法中,可以使用字面量的方式创建对象,并定义对象的属性和方法。例如:
```javascript
var Circle={
"PI":3.14159,
"area":function(r){
return this.PI r r;
}
};
alert(Circle.area(1.0));
```
四、变化写法
实质和第一种一样,但可以通过扩展原型来添加方法,例如:
```javascript
var Circle=function(r){
this.r=r;
}
Circle.PI = 3.14159;
Circle.prototype={
area:function(){
return this.r this.r Circle.PI;
}
}
var obj=new Circle(1.0);
alert(obj.area());
```关于this的指向问题,需要注意在对象内部对变量的创建和使用都是用"this."开头的。在JavaScript中,this的指向是根据函数的调用方式而定的。在对象的方法中,this指向该对象;在单独调用函数时,this指向全局对象。在使用this时需要注意其指向问题,以避免出现错误。本文介绍的内容希望能够对大家有所帮助。除了上述内容,还有其他关于JavaScript面向对象编程的知识需要掌握,如类的继承、封装等。在实际开发中,还需要不断积累经验和技巧,以提高编程能力。推荐狼蚁网站SEO优化等学习资源,以便大家更好地学习和掌握相关知识。ContactModel是一个重要的对象,它拥有三个属性和四个方法。这些属性包括crtnewFriendListLen、crtNewFriendList和crtFindedUserID,而方法则包括requestContactList、requestNewfriendList、requestFindUser和requestAddContact。在这个对象内部,要访问自己的属性时,都需要使用“this.”来指定。
当我们创建一个新的ContactModel实例时,可以想象它是一个管理联系人信息的容器。这个容器可以存储好友列表的长度、新的好友列表以及已经找到的用户ID等信息。它还提供了几个方法来处理与联系人相关的操作。
在实际使用中,我们遇到了一个问题。在requestFindUser方法的回调函数中,如果我们直接使用this.crtFindedUserID来存储从服务器传来的数值,那么在之后调用requestAddContact方法时,我们无法获取到crtFindedUserID的值。这是因为在这个回调函数中,this的指向并不是ContactModel的实例,而是当前的方法上下文。我们需要找到一种方法,在这个回调函数中获取到ContactModel的实例,并给它的属性crtFindedUserID赋值。
为了解决这个问题,我们可以将ContactModel的实例作为参数传递给requestFindUser方法。这样,在回调函数中,我们就可以通过这个参数来访问ContactModel的实例,并将其属性crtFindedUserID设置为从服务器传来的值。我们还需要确保在其他方法中也能够正确地访问到这个实例。
以下是修改后的代码示例:
```javascript
function ContactModel() {
this.crtnewFriendListLen;
this.crtNewFriendList;
this.crtFindedUserID = "-1";
if (typeof ContactModel._initialized == "undefined") {
ContactModel.prototype.requestContactList = function() { / ... / }
ContactModel.prototype.requestNewfriendList = function() { / ... / }
ContactModel.prototype.requestFindUser = function(userID, contactModelInstance) {
$.getJSON(mainUrl + "User/getuserinfo", {"uid": userID}, function(resultObj) {
contactModelInstance.crtFindedUserID = userID; // 使用传入的实例来设置属性
uiManager.contectAddPage.receiveFindUserResult(resultObj);
});
}
ContactModel.prototype.requestAddContact = function(remark) {
alert(this.crtFindedUserID); // 在这里可以正确访问到crtFindedUserID的值
// ... 其他代码 ...
}
ContactModel._initialized = true;
}
}
```
现在,在调用requestFindUser方法时,我们需要将当前的ContactModel实例作为参数传递进去。这样,在回调函数中就可以通过这个参数来访问和修改实例的属性了。在其他方法中,我们仍然可以通过this来访问这些属性。这样的修改解决了原代码中存在的问题,使对象能够更好地处理联系人相关的信息。在JavaScript的对象编程中,关于视图组件的监听回调方法,一个常见的问题是`this`关键字的指向。在回调函数中,`this`并不指向对象本身,而是指向被回调的方法体。当我们需要访问对象本身的属性时,必须获取该对象的实例来进行访问,而非直接使用`this`。
让我们深入一下狼蚁网站的SEO优化与JavaScript面向对象编程的联系。
在HTML的头部设置里,我们首先定义了网页的字符集为gb2312,以确保网页内容的正确显示。接着,我们创建了一个名为“person”的构造函数,用于创建具有名字和年龄属性的对象。我们为“person”原型添加了“getName”和“getAge”方法,以便获取对象的属性信息。
在JavaScript中,面向对象编程是一种强大的编程模式,允许我们创建可重复使用的对象,并为它们定义属性和方法。在上述代码中,我们定义了一个名为“test”的函数,该函数创建了一个名为“man”的person对象实例,并调用了其getName和getAge方法。通过这种方式,我们可以轻松地访问和操作对象的属性。
我们还定义了一个名为“test2”的对象,它包含两个方法“te”和“te1”。虽然它们类似于静态方法,但不需要通过对象实例来调用,可以直接通过对象本身来调用。这种写法提供了一种灵活的方式来组织和管理代码。
在网页中,我们添加了一个按钮,当点击该按钮时,会触发“test”函数。这样,我们就可以在浏览器中看到JavaScript面向对象编程的实际应用效果。
理解JavaScript中的面向对象编程对于学习和掌握高级编程技术至关重要。无论是开发网站、应用程序还是进行SEO优化,深入理解JavaScript的面向对象编程都将为您带来极大的帮助。希望本文能为大家的学习和实践提供有益的指导。至于“cambrian.render('body')”,这可能是某个特定库或框架的API调用,需要结合具体语境进行解读和应用。
微信营销
- js面向对象的写法
- 基于jQuery实现响应式圆形图片轮播特效
- PHP中CURL的几个经典应用实例
- 详解vuejs2.0 select 动态绑定下拉框支持多选
- JavaScript实现HTML5游戏断线自动重连的方法
- TP5框架model常见操作示例小结【增删改查、聚合、
- Vue中消息横向滚动时setInterval清不掉的问题及解决
- asp简单的ajax留言板
- vim vax 快捷键大全
- JSON在ASP.NET中使用方法
- ASP.NET Core 3.0迁移的完美避坑指南
- Angular2 (RC4) 路由与导航详解
- 微信小程序下拉框功能的实例代码
- 微信小程序组件传值图示过程详解
- 详解 vue.js用法和特性
- 当Mysql行锁遇到复合主键与多列索引详解