- Vue响应式数组方法深度解析
北辰alk
前端vuevue.jsjavascriptecmascript
文章目录一、Vue数组响应式核心机制1.原生JavaScript数组的局限性2.Vue的解决方案二、Vue封装的七大数组方法1.方法列表与功能说明2.方法拦截器实现原理三、视图更新触发全流程1.依赖收集流程2.更新触发流程四、源码级实现分析1.原型链覆盖实现2.新增元素响应式处理五、特殊场景处理方案1.索引直接修改问题2.长度修改处理3.过滤数组处理六、Vue3的响应式数组优化1.Proxy实现机
- web前端面试之——原型与原型链
tsuyoii
前端面试javascript面试javascript前端
原型与原型链(一)原型理解与记忆核心:F.prototype===f.__proto__===原型对象(原型)f.constructor===F.prototype.constructor===F===f.__proto__.constructor解释:每个函数F(也是对象,js中一切皆对象)在初始化时都拥有一个prototype属性,该属性指向原型对象(即原型)F=newFunction();F
- 前端面试:原型和原型链
啃火龙果的兔子
原型模式
什么是原型对象每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型对象,每一个对象都会从原型"继承"属性。函数的原型和对象的原型每个函数都有一个prototype属性,该属性指向函数的原型每个对象都有一个__proto__属性,该属性指向对象的原型什么是原型链当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去
- 面试之《原型与原型链》
只会写Bug的程序员
笔记面试面试前端
在JavaScript中,原型(Prototype)和原型链(PrototypeChain)是实现对象继承和属性共享的核心机制。以下是详细介绍:一、原型(Prototype)基本概念每个函数(包括构造函数)都有一个prototype属性,指向一个对象,称为原型对象。当使用new调用构造函数创建实例时,实例内部会有一个隐藏属性__proto__(ES6规范中称为[[Prototype]]),指向构造
- ES6 Class 转 ES5 实现
Tiffany_Ho
前端javascriptes6
ES6示例代码classAnimal{constructor(name){this.name=name;}eat(){console.log(`${this.name}iseating`);}staticsleep(){console.log("Sleeping");}}classDogextendsAnimal{//原型链继承+静态方法继承constructor(name,breed){supe
- Web安全——node.js原型链污染
@Camelus
渗透与攻防node.js原型模式javascriptweb安全网络安全
目录(一)成因0x01前置知识0x02漏洞分析(二)产生条件0x01检查漏洞0x02常见的危险函数(一)成因0x01前置知识js是由对象组成的,对象与对象之间存在着继承关系。每个对象都有一个指向它的原型的内部链接,而这个原型对象又有他自己的原型,直到null为止整体看来就是多个对象层层继承,实例对象的原型链接形成了一条链,也就是js的原型链。在js中每个函数都有一个prototype属性,而每个对
- Node.js原型链污染之前端
AvskBug
node.js前端
原型链污染是一种常见的安全漏洞,特别是在前端开发中。本文将详细介绍Node.js中的原型链污染问题,并提供相应的源代码示例。在阅读本文之前,请确保您对JavaScript和Node.js的基本概念有一定的了解。什么是原型链污染?原型链污染是指攻击者能够通过修改JavaScript对象的原型链来影响属性和方法的访问。这种攻击通常利用了JavaScript中原型继承的特性,通过修改原型链来更改对象的行
- javascript的六种继承方式
javascript前端
1.原型链式继承functionParent(){this.name='Parent';}Parent.prototype.introduce=function(){console.log(this.name);};functionChild(){this.name='Child';}Child.prototype=newParent();constchildren=newChild();chil
- hasOwnProperty是什么?【JavaScript方法】
幸运小圣
JavaScriptjavascript开发语言
hasOwnPropertyhasOwnProperty是什么?用于判断一个对象是否包含特定的自身属性。它只会返回对象自身具有的属性,而不会返回从原型链上继承的属性。obj.hasOwnProperty(prop)obj是需要检查的对象。prop是需要检查是否存在的属性名(字符串)。返回值:如果对象obj具有名为prop的自身属性,则返回true。否则返回false。constobj={name:
- Es5 javascript实现继承的5种方式及对应缺点(超详细)
没资格抱怨
JS核心javascript前端
1.原型链原型链作为实现继承的主要方法,其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。简单理解为:将父类构造函数的实例对象作为子类构造函数的原型对象,通过修改原型的方式实现继承另一个引用类型的属性和方法。代码演示:functionParent(name){this.name=name;this.children=["a","b"];}functionChild(){}Child
- 前端开发核心知识点深度解析:从CSS到Vue的全面指南
A_cot
cssvue.js前端开发语言javascript
一、CSS篇1.link与@import的区别加载方式:是HTML标签,并行加载;@import是CSS语法,串行加载兼容性:@import不支持IE5以下DOM控制:link可通过JS操作DOM修改,@import不可动态修改权重计算:@import引入的样式优先级低于link@importurl('style.css');二、JavaScript篇2.原型链机制原型对象:每个函数都有proto
- 通俗理解闭包
yuren_xia
前端技术javascript
JavaScript在ES6之前并没有类的概念,但通过原型链和闭包,开发者可以实现类似继承和封装的功能(原型链实现继承,闭包实现封装)。ES6引入了类语法,但闭包仍然是实现私有数据封装的重要手段之一。另外,使用闭包还可用于保存上下文信息等场景。一、定义从函数角度闭包是指有权访问另一个函数作用域中的变量的函数。即使外部函数已经返回,闭包仍然可以访问外部函数内部的变量。例如:functionouter
- js原型和原型链,到底咋回事?
IT木昜
大白话前端面试题javascript前端
js原型和原型链,到底咋回事?js原型的原理在JavaScript里,每个对象都有一个“隐藏的小伙伴”,这个“小伙伴”就是原型。可以把原型想象成一个模板或者一个仓库,对象能从它这个“小伙伴”那里借用一些属性和方法。当你访问一个对象的某个属性或方法时,JavaScript会先在这个对象本身找,如果没找到,就会去它的原型里找。代码示例//定义一个构造函数functionPerson(name){thi
- Vue.prototype 详解及使用
是小傲雨呀^_^
vue.jsjavascript前端
简介:在Vue.js开发中,Vue.prototype是一个强大的特性,允许开发者向所有Vue实例添加全局方法或属性。一、Vue.prototype的作用与原理原型链继承Vue实例通过原型链继承Vue.prototype上的属性和方法。当在原型上添加属性或方法后,所有组件(包括根实例和子组件)均可通过this直接访问。全局共享适合定义全局工具函数、第三方库实例(如Axios、Lodash)或配置常
- 前端面试题
木輮
javascriptjavascript前端vue.js
文章目录一、闭包(完)二、原型链(完)三、防抖和节流(完)四、Vue相关1、MVC和MVVM的区别2、v-model原理3、vue中的data为什么是一个函数?(面试常问)4、v-if和v-show的区别5、v-for中为什么要有key6、dist目录打包后过大,解决办法?7、watch和computed的区别8、子组件给父组件传递数据9、全局事件总线:可以实现任意组件间的数据传递10、Vue生命
- 面向对象中的原型
码了三年又三年
原型模式
JavaScript中的原型原型的基本概念在JS中,每个对象都有一个内部属性[[prototype]](通过__proto__访问),指向它的原型对象。原型对象也是一个普通对象,它有自己的属性和方法,并且也可以有自己的原型,从而形成原型链。当访问一个对象的属性或方法时,如果对象本身没有该属性或方法,JS会沿着原型链向上查找,直到找到该属性或到达原型链的末端(null)。JS通过原型机制实现了继承,
- JavaScript中原型和原型链详解(举例说明)
七公子77
javascript原型模式
JavaScript的原型和原型链是其继承机制的核心。以下通过具体示例逐步说明:一、原型(Prototype)每个JavaScript对象都有一个隐藏的[[Prototype]]属性(可通过__proto__或Object.getPrototypeOf()访问),指向它的原型对象。示例1:对象的原型constanimal={type:"Unknown",sound(){console.log("M
- 20250108慧能科技前端面试
uperficialyu
前端面试实战整理前端
目录ajax怎么取消请求移动端怎么实现px尺寸vite和webpack的区别设计模式讲一下什么是原型链讲一下什么是闭包实现eventbus事件循环项目发布后,如何对项目进行优化,怎么优化vue2的diff算法和vue3的diff算法的区别1.ajax怎么取消请求原生JavaScript(XMLHttpRequest)创建XMLHttpRequest对象发送请求,通过调用其abort()方法来取消请
- 七天速记前端八股文(重点)
秋の本名
前端前端笔记javascript
forin和正常for循环的区别在遍历数组时,正常的for循环通常比for...in循环更适合。虽然for...in循环可以用于遍历数组,但它有一些潜在的问题和限制。下面是一些使用for循环相对于for...in循环的优势:顺序遍历:for循环可以按照数组元素的顺序进行迭代。而for...in循环在遍历数组时,并不能保证按照特定顺序遍历,因为它遍历的是对象的属性。不包含原型链上的属性:for循环仅
- JS - 手写 instanceof 和 new 关键字
DavidZ_13
手写实现代码javascript前端node.js经验分享笔记其他web
目录instanceof解释手写实现new关键字解释手写实现instanceof解释instanceof是JavaScript中的运算符,用于检查一个对象是否是另一个对象的实例,其实现原理如下:当使用instanceof运算符时,会调用对象的[[Symbol.hasInstance]]方法,该方法在对象的原型链上递归查找,判断目标对象是否为指定类的实例,如果在原型链中找到指定类的原型对象,则返回t
- JavaScript原型链与继承:优化与扩展的深度探索
李游Leo
ECMAScript编程语言前端原型模式javascript开发语言
在JavaScript的世界里,万物皆对象,而每个对象都有一个与之关联的原型对象,这就构成了原型链的基础。原型链,简单来说,是一个由对象的原型相互连接形成的链式结构。每个对象都有一个内部属性[[Prototype]](在大多数浏览器中可以通过__proto__属性访问,不过__proto__是非标准属性,更推荐使用Object.getPrototypeOf()方法来获取原型),它指向该对象的原型对
- 手写 instanceof 方法
hello~~~
原型模式javascript开发语言
instanceof运算符用于判断构造函数的prototype属性是否出现在对象的原型链中的任何位置。实现步骤:首先获取类型的原型然后获得对象的原型然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为null,因为原型链最终为nullfunctionmyInstanceof(left,right){letproto=Object.getPrototypeOf(left),//获取对象的原型
- 手写instanceof方法
丹丹的小跟班
你应该掌握的js技巧js
1.功能instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上。2.判断参数参数1:实例(某个实例对象)参数2:类(某个构造函数)3.instanceof特性instanceof在判断实例是否属于某个构造函数时,会自动将实例对象的原型链获取到最底层,所以,即使时[]instanceofObject这也是为true的4.仿写instanceof方法func
- JavaScript原型链污染漏洞分析
漏洞安全
原型链污染漏洞CVE:1、yargs-Parser输入验证错误漏洞(CVE-2020-7608)2、tough-cookie安全漏洞(CVE-2023-26136)3、JSON5原型污染漏洞(CVE-2022-46175)漏洞描述:1、yargs-Parser输入验证错误漏洞(CVE-2020-7608):yargs-parser是一款选项解析器。yargs-parser13.1.2之前版本、14
- JS面向对象封装 ESC/POS 指令打印类
warmbook
javascript前端node.js
微信小程序蓝牙打印请搜索插件ESCPOS指令打印,先申请,再V我50RMB可永久使用。代码中用到的中文转码方法见:gbk.jsgb2312编码字符转Uint8Array,解决打印机中文乱码问题基类命令规则参考小程序插件文档Printer类部分import{isAscii,U2B}from'./gbk.js';constfontSize=12,/*计算字符串长度(1个中文=2个英文字符)*/char
- 2025年前端面试题汇总
涔溪
前端
JavaScript核心异步编程Promise、async/await的工作原理及应用场景。如何处理并发请求,使用Promise.all()或Promise.race()等方法。解释事件循环机制,理解微任务(microtask)与宏任务(macrotask)的区别。原型链深入理解JavaScript中的原型继承模型。举例说明如何通过修改原型对象影响所有实例。闭包定义闭包及其作用,如实现私有变量和函
- 面试官:谈谈你对JavaScript原型链的理解
程序员
在前端开发领域的每一次深入交流中,JavaScript的原型链总是那个绕不开的技术高地。它不仅是理解JavaScript对象模型的关键,也是评估前端开发者技术深度和广度的重要指标。引言:为何原型链如此重要?在JavaScript中,原型链是实现继承的核心机制。它允许对象通过原型对象间接地共享属性和方法,这种机制不仅减少了代码的冗余,还提高了代码的可复用性和灵活性。因此,掌握原型链的原理和应用,对于
- JS宏进阶:Map与Object
jackispy
JS宏进阶javascript开发语言ecmascript
Object是JavaScript中最基本的数据类型之一,用于创建对象实例。newObject()是创建空对象的一种常见方式。而Map只是一种用于存储键值对的数据结构。相对于Object而言,他没有原型(也就是不能通过原型链的方式添加方法),但也存在自身的优势,某些场景,newMap可能比newObject更好用。下面是其内置方法的详细介绍:一、newMap1、创建新的Map对象,只能使用newM
- 读《javaScript高级程序设计-第6章》之继承
javascript
读这篇之前,最好是已读过我前面的关于对象的理解和封装类的笔记。第6章我一共写了3篇总结,下面是相关链接:读《javaScript高级程序设计-第6章》之理解对象读《javaScript高级程序设计-第6章》之封装类一、原型链原型链最简单的理解就是:原型对象指向另一个构造函数的实例。此时的原型对象包括一个指向另一个原型的指针,相应的,另一个原型中的constructor指向另一个构造函数。这种关系层
- 原型链
Christoles
1.什么是原型链?原型链: 当我们需要调用一个变量的时候,那么JS会给我们提供一个搜索机制,从当前的作用域范围内进行查询; 如果没有,则继续往上查询,直到查出来为止; 如果全局作用域内都没有这个变量的时候,就结束查找; 像这样当前作用域内往全局作用域一层一层往上查找形成的链,我们称为原型链(也称为作用域链)。proto:我们可以通过这个原型链找来到对象的父级语法:proto前后各2个下划线
- Algorithm
香水浓
javaAlgorithm
冒泡排序
public static void sort(Integer[] param) {
for (int i = param.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
int current = param[j];
int next = param[j + 1];
- mongoDB 复杂查询表达式
开窍的石头
mongodb
1:count
Pg: db.user.find().count();
统计多少条数据
2:不等于$ne
Pg: db.user.find({_id:{$ne:3}},{name:1,sex:1,_id:0});
查询id不等于3的数据。
3:大于$gt $gte(大于等于)
&n
- Jboss Java heap space异常解决方法, jboss OutOfMemoryError : PermGen space
0624chenhong
jvmjboss
转自
http://blog.csdn.net/zou274/article/details/5552630
解决办法:
window->preferences->java->installed jres->edit jre
把default vm arguments 的参数设为-Xms64m -Xmx512m
----------------
- 文件上传 下载 解析 相对路径
不懂事的小屁孩
文件上传
有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着,网上各种百度着。
下面总结一下遇到的问题:
文件上传,在页面上传的时候,不要想着去操作绝对路径,浏览器会对客户端的信息进行保护,避免用户信息收到攻击。
在上传图片,或者文件时,使用form表单来操作。
前台通过form表单传输一个流到后台,而不是ajax传递参数到后台,代码如下:
<form action=&
- 怎么实现qq空间批量点赞
换个号韩国红果果
qq
纯粹为了好玩!!
逻辑很简单
1 打开浏览器console;输入以下代码。
先上添加赞的代码
var tools={};
//添加所有赞
function init(){
document.body.scrollTop=10000;
setTimeout(function(){document.body.scrollTop=0;},2000);//加
- 判断是否为中文
灵静志远
中文
方法一:
public class Zhidao {
public static void main(String args[]) {
String s = "sdf灭礌 kjl d{';\fdsjlk是";
int n=0;
for(int i=0; i<s.length(); i++) {
n = (int)s.charAt(i);
if((
- 一个电话面试后总结
a-john
面试
今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。
面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:
在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。
然后对list和map分别举几个类型:
list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了
- MSSQL中Escape转义的使用
aijuans
MSSQL
IF OBJECT_ID('tempdb..#ABC') is not null
drop table tempdb..#ABC
create table #ABC
(
PATHNAME NVARCHAR(50)
)
insert into #ABC
SELECT N'/ABCDEFGHI'
UNION ALL SELECT N'/ABCDGAFGASASSDFA'
UNION ALL
- 一个简单的存储过程
asialee
mysql存储过程构造数据批量插入
今天要批量的生成一批测试数据,其中中间有部分数据是变化的,本来想写个程序来生成的,后来想到存储过程就可以搞定,所以随手写了一个,记录在此:
DELIMITER $$
DROP PROCEDURE IF EXISTS inse
- annot convert from HomeFragment_1 to Fragment
百合不是茶
android导包错误
创建了几个类继承Fragment, 需要将创建的类存储在ArrayList<Fragment>中; 出现不能将new 出来的对象放到队列中,原因很简单;
创建类时引入包是:import android.app.Fragment;
创建队列和对象时使用的包是:import android.support.v4.ap
- Weblogic10两种修改端口的方法
bijian1013
weblogic端口号配置管理config.xml
一.进入控制台进行修改 1.进入控制台: http://127.0.0.1:7001/console 2.展开左边树菜单 域结构->环境->服务器-->点击AdminServer(管理) &
- mysql 操作指令
征客丶
mysql
一、连接mysql
进入 mysql 的安装目录;
$ bin/mysql -p [host IP 如果是登录本地的mysql 可以不写 -p 直接 -u] -u [userName] -p
输入密码,回车,接连;
二、权限操作[如果你很了解mysql数据库后,你可以直接去修改系统表,然后用 mysql> flush privileges; 指令让权限生效]
1、赋权
mys
- 【Hive一】Hive入门
bit1129
hive
Hive安装与配置
Hive的运行需要依赖于Hadoop,因此需要首先安装Hadoop2.5.2,并且Hive的启动前需要首先启动Hadoop。
Hive安装和配置的步骤
1. 从如下地址下载Hive0.14.0
http://mirror.bit.edu.cn/apache/hive/
2.解压hive,在系统变
- ajax 三种提交请求的方法
BlueSkator
Ajaxjqery
1、ajax 提交请求
$.ajax({
type:"post",
url : "${ctx}/front/Hotel/getAllHotelByAjax.do",
dataType : "json",
success : function(result) {
try {
for(v
- mongodb开发环境下的搭建入门
braveCS
运维
linux下安装mongodb
1)官网下载mongodb-linux-x86_64-rhel62-3.0.4.gz
2)linux 解压
gzip -d mongodb-linux-x86_64-rhel62-3.0.4.gz;
mv mongodb-linux-x86_64-rhel62-3.0.4 mongodb-linux-x86_64-rhel62-
- 编程之美-最短摘要的生成
bylijinnan
java数据结构算法编程之美
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class ShortestAbstract {
/**
* 编程之美 最短摘要的生成
* 扫描过程始终保持一个[pBegin,pEnd]的range,初始化确保[pBegin,pEnd]的ran
- json数据解析及typeof
chengxuyuancsdn
jstypeofjson解析
// json格式
var people='{"authors": [{"firstName": "AAA","lastName": "BBB"},'
+' {"firstName": "CCC&
- 流程系统设计的层次和目标
comsci
设计模式数据结构sql框架脚本
流程系统设计的层次和目标
 
- RMAN List和report 命令
daizj
oraclelistreportrman
LIST 命令
使用RMAN LIST 命令显示有关资料档案库中记录的备份集、代理副本和映像副本的
信息。使用此命令可列出:
• RMAN 资料档案库中状态不是AVAILABLE 的备份和副本
• 可用的且可以用于还原操作的数据文件备份和副本
• 备份集和副本,其中包含指定数据文件列表或指定表空间的备份
• 包含指定名称或范围的所有归档日志备份的备份集和副本
• 由标记、完成时间、可
- 二叉树:红黑树
dieslrae
二叉树
红黑树是一种自平衡的二叉树,它的查找,插入,删除操作时间复杂度皆为O(logN),不会出现普通二叉搜索树在最差情况时时间复杂度会变为O(N)的问题.
红黑树必须遵循红黑规则,规则如下
1、每个节点不是红就是黑。 2、根总是黑的 &
- C语言homework3,7个小题目的代码
dcj3sjt126com
c
1、打印100以内的所有奇数。
# include <stdio.h>
int main(void)
{
int i;
for (i=1; i<=100; i++)
{
if (i%2 != 0)
printf("%d ", i);
}
return 0;
}
2、从键盘上输入10个整数,
- 自定义按钮, 图片在上, 文字在下, 居中显示
dcj3sjt126com
自定义
#import <UIKit/UIKit.h>
@interface MyButton : UIButton
-(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloa
- MySQL查询语句练习题,测试足够用了
flyvszhb
sqlmysql
http://blog.sina.com.cn/s/blog_767d65530101861c.html
1.创建student和score表
CREATE TABLE student (
id INT(10) NOT NULL UNIQUE PRIMARY KEY ,
name VARCHAR
- 转:MyBatis Generator 详解
happyqing
mybatis
MyBatis Generator 详解
http://blog.csdn.net/isea533/article/details/42102297
MyBatis Generator详解
http://git.oschina.net/free/Mybatis_Utils/blob/master/MybatisGeneator/MybatisGeneator.
- 让程序员少走弯路的14个忠告
jingjing0907
工作计划学习
无论是谁,在刚进入某个领域之时,有再大的雄心壮志也敌不过眼前的迷茫:不知道应该怎么做,不知道应该做什么。下面是一名软件开发人员所学到的经验,希望能对大家有所帮助
1.不要害怕在工作中学习。
只要有电脑,就可以通过电子阅读器阅读报纸和大多数书籍。如果你只是做好自己的本职工作以及分配的任务,那是学不到很多东西的。如果你盲目地要求更多的工作,也是不可能提升自己的。放
- nginx和NetScaler区别
流浪鱼
nginx
NetScaler是一个完整的包含操作系统和应用交付功能的产品,Nginx并不包含操作系统,在处理连接方面,需要依赖于操作系统,所以在并发连接数方面和防DoS攻击方面,Nginx不具备优势。
2.易用性方面差别也比较大。Nginx对管理员的水平要求比较高,参数比较多,不确定性给运营带来隐患。在NetScaler常见的配置如健康检查,HA等,在Nginx上的配置的实现相对复杂。
3.策略灵活度方
- 第11章 动画效果(下)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- FAQ - SAP BW BO roadmap
blueoxygen
BOBW
http://www.sdn.sap.com/irj/boc/business-objects-for-sap-faq
Besides, I care that how to integrate tightly.
By the way, for BW consultants, please just focus on Query Designer which i
- 关于java堆内存溢出的几种情况
tomcat_oracle
javajvmjdkthread
【情况一】:
java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: <jvm-arg>-Xms3062m</jvm-arg> <jvm-arg>-Xmx
- Manifest.permission_group权限组
阿尔萨斯
Permission
结构
继承关系
public static final class Manifest.permission_group extends Object
java.lang.Object
android. Manifest.permission_group 常量
ACCOUNTS 直接通过统计管理器访问管理的统计
COST_MONEY可以用来让用户花钱但不需要通过与他们直接牵涉的权限
D