js修改php变量_PHP和JavaScript中的class

2b0f9ed24e986695f8e8f8106cac22c2.png

类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。

PHP和JavaScript中都有class。同为class类,它们有什么区别呢?

一、JS中的class类

JS的class是一个语法糖。说到JS中的class,就不得不说function,二者都是用来定义构造函数,而class让对象原型的写法更加清晰。

<script>
        //定义类
        class Point {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }

            toString() {
                return this.x + ', ' + this.y;
            }
        }
        var p = new Point(1, 2);
        console.log(p.toString());
    </script>

以上代码在控制台输出如下:

21d5a11f2e91b71b4e89f171d3fcd53b.png
图1、JavaScript定义类

以上这段代码定义了一个类,有一个constructor方法,即构造方法,而this关键字代表实例对象。

在JS面向对象中,出身于ES6中的class,与function相比,有下面的特点:

  1. class 写法更加简洁、含义更加明确、代码结构更加清晰。
  2. class 尽管也是函数,却无法直接调用,因此不存在防御性代码了
  3. class 不存在变量提升
  4. class 为污染 window 等全局变量
  5. class 函数体中的代码始终以严格模式执行,于是提高了代码可靠性
  6. 可直接使用 set 和 get 函数
  7. class 内部方法中若涉及到 this时,class 中的 this 永远都不会指向 window
  8. class 可以从 javascript 中几大类中进行继承:Array、number、string....
  9. class 中有一个对象,可以取到父类的方法、构造函数

二、PHP中的类

PHP中有两个重要的角色:类与对象。类是一种抽象的概念,先有类再有对象,通过new类得到一个对象,类似于JS面向对象中的构造函数,是函数模板,为对象提供基本结构。

PHP中也有构造函数,但与JS中的构造函数不同,当函数与类同名时,这个函数将成为构造函数。如果一个类没有构造函数,则调用基类(即父类)的构造函数,如果有的话,则调用该构造函数。

<?php

    class Phone
    {
        public function callEmer()
        {
            echo __METHOD__,'<br/>';
        }

        public function call()
        {
            echo __METHOD__,'<br/>';
        }

        public function facetime()
        {
            echo __METHOD__,'<br/>';
        }
    }

三、构造方法

constructor构造方法是类的默认方法。

在JavaScript中,通过new命令生成对象实例时,自动调用构造方法,默认返回实例对象,即this,返回值也可以指定返回另一个对象,但不建议修改。

在PHP中,构造方法在实例化一个对象时,由实例化出来的对象隐式调用(Php在执行中自己调用的)。如果构造方法有形参,那么在实例化类时,就必须传递。

四、this关键字

1.JavaScript中的this

在JS中,this是谁调用指向谁,this指向的只可能是对象,不能是函数,调用规律如下:

  1. 通过函数名()调用的,this永远指向window;
  2. 通过对象.方法调用的,this指向这个对象;
  3. 函数作为数组的一个元素,用数组下标调用,this指向这个数组;
  4. 函数作为window内置函数的回调函数使用,this指向window;
  5. 函数作为构造函数,使用new关键字调用,this指向新new出的对象。

2.PHP中的this

在PHP中,用于类的内部指代类的本身。来访问属性或方法或常量,如下:

  1. 成员属性:this−>属性名
  2. 成员方法:this−>方法名

this还可以用在该类的子类中,来指代本身的属性或方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值