Comments (8)
When a bound function (bounded with _.bind) is used as a constructor, the 'this' provided should be ignored.
Right, but I don't use native bind in a way that exposes this spec'd behavior so the non-spec'ed behavior is consistent cross-browser.
Not using native bind allows me to add custom features like "lazy" bind and keep consistent usage with both approaches (lazy and non-lazy).
I also avoid native bind for Chrome because the simplified version is faster, in other browsers I use native, but wrap to keep consistent behavior without any real perf cost.
This follows the project description:
Lo-Dash’s performance is gained by avoiding slower native methods, instead opting for simplified non-ES5 compliant methods optimized for common usage, and by leveraging function compilation to reduce the number of overall function calls.
from lodash.
Thank you! Fastest response in github! =)
But... this breaks Backbone compatibility (https://twitter.com/jdalton/status/205377865926180864).
from lodash.
But... this breaks Backbone compatibility
Hmm didn't Underscore recently patch its bind?
I ship with Underscore and Backbone unit tests to keep track of those that fail.
The only failing test in Backbone is related to _.escape
because Lo-Dash doesn't unnecessarily escape the ">" character which is explained here.
from lodash.
Here is the error when using lo-dash's bind:
var model = Backbone.Model.extend({})
var collection = Backbone.Collection.extend({
model : model,
initialize : function () {
_.bindAll(this) // practice encouraged by Backbone community
}
})
collection.add({ name : 'test' })
// Uncaught TypeError: Object [object Object] has no method 'set'
from lodash.
Here is the error when using lo-dash's bind:
Ah, someone reported this via twitter but failed to provide any info on it.
Where/which is the bound function being called as a constructor?
I'm kinda geeking out that devs are using this edge feature of Function#bind
, I was afraid so many bad shims where around that this feature was lost.
I will patch this.
from lodash.
https://github.com/documentcloud/backbone/blob/3c7c8d2f1af5/backbone.js#L826
The 'model' property from collection is called as a constructor when adding a plain object ( collection.add({}) )
var model = new this.model(attrs, options);
When calling lo-dash bindAll, this.model is called with the collection itself as 'this' value, instead of a new instance.
from lodash.
Thank you, @jdalton ! Keep up the great work!!!
from lodash.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
from lodash.
Related Issues (20)
- Feature Request: multiple variables in _.template()
- _.defaultsDeeps return and mutate behaviour is inconsistent with null object
- Description of `compact` is incomplete.
- [5 years old bug] _.debounce().flush() fix never made it into production
- Sonatype shows a new critical security violation. HOT 3
- Would It Be Possible to Update the Typing of `max([0, anyNumber])` Such That It Returns Number? HOT 3
- Command injection vuln HOT 3
- Add "isWeakRef" function.
- sortBy nor orderBy not working properly
- Cannot import lodash single function in Node HOT 3
- keyBy not support index HOT 2
- lodash.groupby npm package version is still 4.6.0
- Strange _.rearg / _.reduce behaviour
- isEqual returns incorrect result
- bun build commands not working as expected
- orderBy orders field boolean dosent work HOT 1
- Please republish lodash.forin HOT 4
- Wrong version in lodash.pick vulnerability report CVE-2020-8203 HOT 8
- `lodash.merge` drops keys that are symbols
- Type of parameter object is string in function baseGet(object, path)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lodash.